Logging służy do debugowania, a także do zbierania i analizowania informacji roboczych o aplikacji. Informacje te są zapisywane w pliku zwanym dziennikiem. Pliki dziennika zawierają informacje systemowe dotyczące działania aplikacji klienckiej, na przykład działania użytkownika lub programu.
W tym artykule omówimy, jak skonfigurować rejestrowanie aktywności klienta EWS przy użyciu języka C# .NET.
- Interfejs API C# .NET do pracy z usługami internetowymi MS Exchange
- Włącz rejestrowanie aktywności przy użyciu pliku App.config
- Włącz rejestrowanie aktywności przy użyciu pliku appsettings.json
- Włącz rejestrowanie aktywności w kodzie programu
- Przykład informacji o pliku dziennika
Interfejs API C# .NET do pracy z usługami internetowymi MS Exchange
Do zarządzania MS Exchange Web Services użyjemy Aspose.Email for .NET.
Jest to potężny interfejs API, który umożliwia bezproblemowy dostęp do różnych usług MS Exchange Server. Ponadto zapewnia wiele funkcji do implementacji aplikacji klienckich poczty e-mail.
Możesz pobrać bibliotekę DLL interfejsu API lub zainstalować ją z NuGet za pomocą następującego polecenia.
PM> Install-Package Aspose.Email
Włącz rejestrowanie aktywności przy użyciu pliku App.config
Ta opcja jest odpowiednia dla aplikacji, w których app.config
jest preferowanym sposobem przechowywania konfiguracji aplikacji.
Poniżej przedstawiono kroki umożliwiające włączenie logowania w EWSClient w języku C#.
- Najpierw dodaj plik konfiguracyjny aplikacji do projektu C#, jeśli nie został on wcześniej dodany.
- Następnie dodaj następującą zawartość do pliku konfiguracyjnego.
<?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>
Widzimy dwie sekcje ustawień:
EWSDiagnosticLog
— określa względną lub bezwzględną ścieżkę do pliku dziennika.EWSDiagnosticLogUseDate
— określa, czy dodać ciąg reprezentujący bieżącą datę do nazwy pliku dziennika.
Włącz rejestrowanie aktywności przy użyciu pliku appsettings.json
Ta opcja jest preferowana w przypadku aplikacji platformy .NET Core.
Poniżej przedstawiono kroki umożliwiające włączenie logowania w EWSClient w języku C#.
- Najpierw dodaj plik konfiguracyjny
appsettings.json
do projektu C#, jeśli nie został on wcześniej dodany. Upewnij się, że plik projektu zawiera następujące wiersze w sekcji ItemGroup:
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
- Następnie dodaj następującą zawartość do pliku appsettings.json.
{
"EWSDiagnosticLog": "ews.log",
"EWSDiagnosticLog_UseDate": true
}
Widzimy dwie właściwości:
EWSDiagnosticLog
— określa względną lub bezwzględną ścieżkę do pliku dziennika.EWSDiagnosticLogUseDate
— określa, czy dodać ciąg reprezentujący bieżącą datę do nazwy pliku dziennika.
Włącz rejestrowanie aktywności w kodzie programu
Możesz także włączyć logowanie natychmiast w kodzie. Uwaga: nawet jeśli masz już włączone logowanie przy użyciu plików konfiguracyjnych, ta opcja zostanie zastosowana.
Poniżej przedstawiono kroki umożliwiające włączenie logowania w EWSClient w języku C#.
- Najpierw utwórz EWSClient.
- Następnie ustaw ścieżkę do pliku dziennika za pomocą właściwości LogFileName.
- Na koniec ustaw właściwość UseDateInLogFileName, jeśli to konieczne.
using (var client = EWSClient.GetEWSClient("https://outlook.office365.com/EWS/Exchange.asmx", credentials))
{
client.LogFileName = @"Aspose.Email.EWS.log";
client.UseDateInLogFileName = false;
}
Przykład informacji o pliku dziennika
Poniżej znajduje się przykład wpisów pliku dziennika, gdy wykonywana jest metoda ListMessages. Każdy nowy wpis jest poprzedzony znacznikiem czasu.
W pliku dziennika można wyróżnić następujące wpisy:
- Nagłówek pliku dziennika. Obejmuje wersję Aspose.Email, nazwę i czas rozpoczęcia.
Aspose.Email for .NET [22.10.0.0] EWS Client diagnostic log
Started: 07.11.2022 13:40:16
- Żądanie SOAP do serwera.
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>
- Nagłówki odpowiedzi 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
- Odpowiedź serwera 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>
Uzyskaj bezpłatną licencję API
Możesz otrzymać darmową tymczasową licencję na korzystanie z Aspose.Email for .NET bez ograniczeń ewaluacyjnych.
Wniosek
W tym artykule nauczyłeś się, jak skonfigurować rejestrowanie aktywności w kliencie EWS przy użyciu języka C#. Ta funkcja umożliwia lepsze monitorowanie aplikacji klienckiej. Ponadto możesz zapoznać się z dokumentacją, aby dowiedzieć się więcej o Aspose.Email for .NET. Możesz także zadawać pytania na naszym forum.