
Ведение журнала используется для отладки, а также для сбора и анализа рабочей информации о приложении. Эта информация записывается в файл, называемый журналом. Журналы содержат системную информацию о работе клиентского приложения, например, действия пользователей или программы.
В этой статье мы рассмотрим как настроить ведение журнала активности EWS клиента с использованием C# .NET.
- C# .NET API для работы с MS Exchange Web Services
- Включение ведения журнала активности с использованием файла App.config
- Включение ведения журнала активности с использованием файла appsettings.json
- Включение ведения журнала активности в коде программы
- Пример информации из журнала
C# .NET API для работы с MS Exchange Web Services
Для управления MS Exchange Web Services мы будем использовать Aspose.Email для .NET.
Это мощный API, который позволяет получить доступ к различным сервисам MS Exchange Server без шва. Также он предоставляет много функций для реализации приложений почтовых клиентов.
Вы можете либо скачать DLL API, либо установить его из NuGet, используя следующую команду.
PM> Install-Package Aspose.Email
Включение ведения журнала активности с использованием файла App.config
Этот вариант подходит для приложений, где app.config
является предпочтительным способом хранения конфигурации приложения.
Следующие шаги помогут включить ведение журнала в EWSClient на C#.
- Во-первых, добавьте файл конфигурации приложения в проект C#, если он еще не был добавлен.
- Затем добавьте следующий содержимое в файл конфигурации.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Aspose.Email.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<Aspose.Email.Properties.Settings>
<setting name="EWSDiagnosticLog" serializeAs="String">
<value>..\..\..\Log\Aspose.Email.EWS.log</value>
</setting>
<setting name="EWSDiagnosticLog_UseDate" serializeAs="String">
<value>False</value>
</setting>
</Aspose.Email.Properties.Settings>
</applicationSettings>
</configuration>
Мы можем увидеть два секции настроек:
EWSDiagnosticLog
- Указывает относительный или абсолютный путь к файлу журнала.EWSDiagnosticLog_UseDate
- указывает, следует ли добавлять строковое представление текущей даты к имени файла журнала.
Включение ведения журнала активности с использованием файла appsettings.json
Этот вариант предпочтителен для приложений .NET Core.
Следующие шаги помогут включить ведение журнала в EWSClient на C#.
- Во-первых, добавьте файл конфигурации
appsettings.json
в проект C#, если он еще не был добавлен. Убедитесь, что файл проекта содержит следующие строки в секции ItemGroup:
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
- Затем добавьте следующий содержимое в файл appsettings.json.
{
"EWSDiagnosticLog": "ews.log",
"EWSDiagnosticLog_UseDate": true
}
Мы можем увидеть две свойства:
EWSDiagnosticLog
- Указывает относительный или абсолютный путь к файлу журнала.EWSDiagnosticLog_UseDate
- указывает, следует ли добавлять строковое представление текущей даты к имени файла журнала.
Включение ведения журнала активности в коде программы
Вы также можете включить ведение журнала сразу в коде. Примечание: даже если вы уже включили ведение журнала с помощью файлов конфигурации, этот вариант будет применен.
Следующие шаги помогут включить ведение журнала в EWSClient на C#.
- Во-первых, создайте EWSClient.
- Во-вторых, установите путь к файлу журнала, используя свойство LogFileName.
- Наконец, установите свойство UseDateInLogFileName, если это необходимо.
using (var client = EWSClient.GetEWSClient("https://outlook.office365.com/EWS/Exchange.asmx", credentials))
{
client.LogFileName = @"Aspose.Email.EWS.log";
client.UseDateInLogFileName = false;
}
Пример информации из журнала
Ниже приведен пример записей в журнале, когда выполняется метод ListMessages. Каждая новая запись предшествует временной метке.
Следующие записи могут быть различимы в журнале:
- Заголовок журнала. Включает версию Aspose.Email, имя и время начала.
Aspose.Email для .NET [22.10.0.0] Диагностический журнал EWS клиента
Начато: 07.11.2022 13:40:16
- SOAP-запрос к серверу.
07.11.2022 13:40:16 <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<ExchangeImpersonation xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
<ConnectingSID>
<SmtpAddress>someaddress@someorg.onmicrosoft.com</SmtpAddress>
</ConnectingSID>
</ExchangeImpersonation>
<RequestServerVersion xmlns="http://schemas.microsoft.com/exchange/services/2006/types" Version="Exchange2013" />
</soap:Header>
<soap:Body>
<FindItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" Traversal="Shallow">
<ItemShape>
<BaseShape xmlns="http://schemas.microsoft.com/exchange/services/2006/types">IdOnly</BaseShape>
</ItemShape>
<IndexedPageItemView MaxEntriesReturned="2147483647" Offset="0" BasePoint="Beginning" />
<ParentFolderIds>
<DistinguishedFolderId xmlns="http://schemas.microsoft.com/exchange/services/2006/types" Id="inbox" />
</ParentFolderIds>
</FindItem>
</soap:Body>
</soap:Envelope>
- Заголовки HTTP-ответа
07.11.2022 13:40:18 Cache-Control: private
Transfer-Encoding: chunked
Server: Microsoft-IIS/10.0
request-id: 5c777b61-e3d9-c262-fbb0-6f071d9ff68a
Alt-Svc: h3=":443", h3-29=":443"
X-CalculatedFETarget: CH0PR03CU015.internal.outlook.com, BL0PR02CU002.internal.outlook.com
X-BackEndHttpStatus: 200, 200, 200
Set-Cookie: exchangecookie=bf07039c0ee942438170c2958ca2d330; expires=Tue, 07-Nov-2023 10:40:17 GMT; path=/; secure; HttpOnly
X-CalculatedBETarget: BLAPR10MB4915.namprd10.PROD.OUTLOOK.COM
X-RUM-Validated: 1
x-ms-appId: 3fe84e63-c57b-48eb-ab41-879415751cfd
Restrict-Access-Confirm: 1
x-EwsHandler: FindItem
X-AspNet-Version: 4.0.30319
X-BeSku: WCS6
X-DiagInfo: BLAPR10MB4915
X-BEServer: BLAPR10MB4915
X-Proxy-RoutingCorrectness: 1
X-Proxy-BackendServerStatus: 200
X-FEProxyInfo: AS9PR06CA0693.EURPRD06.PROD.OUTLOOK.COM
X-FEEFZInfo: DHR
X-FEServer: BL0PR02CA0063, CH0PR03CA0449, AS9PR06CA0693
X-FirstHopCafeEFZ: DHR
X-Powered-By: ASP.NET
Date: Mon, 07 Nov 2022 10:40:17 GMT
Content-Type: text/xml; charset=utf-8
- Ответ SOAP сервера.
07.11.2022 13:40:18 <?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<ExchangeImpersonation xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
<ConnectingSID>
<SmtpAddress>someaddress@someorg.onmicrosoft.com</SmtpAddress>
</ConnectingSID>
</ExchangeImpersonation>
<RequestServerVersion Version="Exchange2013" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" />
</soap:Header>
<soap:Body>
<GetItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
<ItemShape>
<BaseShape xmlns="http://schemas.microsoft.com/exchange/services/2006/types">IdOnly</BaseShape>
<AdditionalProperties xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
<FieldURI FieldURI="item:Attachments" /><FieldURI FieldURI="item:DateTimeCreated" />
<FieldURI FieldURI="item:DateTimeReceived" /><FieldURI FieldURI="item:DateTimeSent" />
<FieldURI FieldURI="item:IsDraft" /><FieldURI FieldURI="item:IsFromMe" />
<FieldURI FieldURI="item:HasAttachments" /><FieldURI FieldURI="item:IsUnmodified" />
<FieldURI FieldURI="item:ItemClass" /><FieldURI FieldURI="item:IsSubmitted" />
<FieldURI FieldURI="item:IsResend" /><FieldURI FieldURI="item:DisplayCc" /><FieldURI FieldURI="item:DisplayTo" />
<FieldURI FieldURI="item:Attachments" /><FieldURI FieldURI="item:LastModifiedTime" />
<FieldURI FieldURI="item:Size" /><FieldURI FieldURI="item:Subject" />
<FieldURI FieldURI="item:InternetMessageHeaders" /><FieldURI FieldURI="message:IsRead" />
<FieldURI FieldURI="message:InternetMessageId" /><FieldURI FieldURI="message:Sender" />
<FieldURI FieldURI="message:CcRecipients" /><FieldURI FieldURI="message:ToRecipients" />
<FieldURI FieldURI="message:BccRecipients" /><FieldURI FieldURI="message:From" />
</AdditionalProperties>
</ItemShape>
<ItemIds>
<ItemId
Id="AAMkAGJhZjYzY2I5LTdjYWMtNGFmMC05ODI1LTA5MTAzYTgwZTc4OQBGAAAAAABdN1MC60QcSpWwPYUTPhL2BwATlR+p0q0wT6WD0+d4WJhWAAAAAAEMAAATlR+p0q0wT6WD0+d4WJhWAACp2kv8AAA="
xmlns="http://schemas.microsoft.com/exchange/services/2006/types" />
</ItemIds>
</GetItem>
</soap:Body>
</soap:Envelope>
Получите бесплатную лицензию API
Вы можете получить бесплатную временную лицензию для использования Aspose.Email для .NET без ограничений на оценку.
Заключение
В этой статье вы узнали, как настроить ведение журнала активности в EWS клиенте с использованием C#. Эта функция позволяет лучше контролировать ваше клиентское приложение. Кроме того, вы можете изучить документацию, чтобы узнать больше о Aspose.Email для .NET. Также вы можете задать свои вопросы на нашем форуме.