Logging används för felsökning, samt för att samla in och analysera fungerande information om applikationen. Denna information skrivs till en fil som kallas en logg. Loggfiler innehåller systeminformation om driften av klientapplikationen, till exempel användar- eller programåtgärder.
I den här artikeln kommer vi att täcka hur du ställer in EWS-klientaktivitetsloggning med C# .NET.
- C# .NET API för att fungera med MS Exchange Web Services
- Aktivera aktivitetsloggning med filen App.config
- Aktivera aktivitetsloggning med filen appsettings.json
- Aktivera aktivitetsinloggning programkod
- Ett exempel på en loggfil info
C# .NET API för att fungera med MS Exchange Web Services
För att hantera MS Exchange Web Services kommer vi att använda Aspose.Email for .NET.
Det är ett kraftfullt API som ger tillgång till olika tjänster från MS Exchange Server sömlöst. Det ger också många funktioner för att implementera e-postklientapplikationer.
Du kan antingen ladda ner API:s DLL eller installera den från NuGet med följande kommando.
PM> Install-Package Aspose.Email
Aktivera aktivitetsloggning med filen App.config
Det här alternativet är lämpligt för applikationer där “app.config” är det föredragna sättet att behålla appkonfigurationen.
Följande är stegen för att aktivera inloggning i EWSClient i C#.
- Lägg först till en applikationskonfigurationsfil till ett C#-projekt, om den inte har lagts till tidigare.
- Lägg sedan till följande innehåll i konfigurationsfilen.
<?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>
Vi kan se två inställningssektioner:
EWSDiagnosticLog
- Anger den relativa eller absoluta sökvägen till loggfilen.EWSDiagnosticLogUseDate
- anger om en strängrepresentation av det aktuella datumet ska läggas till i loggfilens namn.
Aktivera aktivitetsloggning med filen appsettings.json
Det här alternativet är att föredra för .NET Core-applikationer.
Följande är stegen för att aktivera inloggning i EWSClient i C#.
- Lägg först till en
appsettings.json
-konfigurationsfil till ett C#-projekt, om den inte har lagts till tidigare. Se till att projektfilen innehåller följande rader i avsnittet ItemGroup:
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
- Lägg sedan till följande innehåll i filen appsettings.json.
{
"EWSDiagnosticLog": "ews.log",
"EWSDiagnosticLog_UseDate": true
}
Vi kan se två egenskaper:
EWSDiagnosticLog
- Anger den relativa eller absoluta sökvägen till loggfilen.EWSDiagnosticLogUseDate
- anger om en strängrepresentation av det aktuella datumet ska läggas till i loggfilens namn.
Aktivera aktivitetsinloggning programkod
Du kan även aktivera inloggning omedelbart i koden. Obs: även om du redan har aktiverat loggning med hjälp av konfigurationsfiler kommer detta alternativ att tillämpas.
Följande är stegen för att aktivera inloggning i EWSClient i C#.
- Skapa först en EWSClient.
- För det andra, ställ in sökvägen till loggfilen med egenskapen LogFileName.
- Slutligen, ställ in egenskapen UseDateInLogFileName om det är nödvändigt.
using (var client = EWSClient.GetEWSClient("https://outlook.office365.com/EWS/Exchange.asmx", credentials))
{
client.LogFileName = @"Aspose.Email.EWS.log";
client.UseDateInLogFileName = false;
}
Ett exempel på en loggfil info
Nedan är ett exempel på loggfilposter när metoden ListMessages exekveras. Varje ny post föregås av en tidsstämpel.
Följande poster kan urskiljas i loggfilen:
- Loggfilens rubrik. Inkluderar Aspose.Email-version, namn och starttid.
Aspose.Email for .NET [22.10.0.0] EWS Client diagnostic log
Started: 07.11.2022 13:40:16
- SOAP-begäran till servern.
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-svarsrubriker
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-serversvar.
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>
Skaffa en gratis API-licens
Du kan få en gratis tillfällig licens för att använda Aspose.Email för .NET utan utvärderingsbegränsningar.
Slutsats
I den här artikeln har du lärt dig hur du ställer in aktivitetsloggning i EWS-klienten med C#. Denna funktion gör att du kan ha bättre övervakning av din klientapplikation. Dessutom kan du utforska dokumentationen för att läsa mer om Aspose.Email for .NET. Du kan också ställa dina frågor via vårt forum.