
Logging è utilizzato per il debug, così come per raccogliere e analizzare informazioni lavorative sull’applicazione. Queste informazioni vengono scritte in un file chiamato log. I file di log contengono informazioni di sistema sul funzionamento dell’applicazione client, ad esempio, azioni dell’utente o del programma.
In questo articolo, tratteremo come configurare il logging delle attività del client EWS utilizzando C# .NET.
- API C# .NET per lavorare con i servizi Web di MS Exchange
- Abilitare il logging delle attività utilizzando il file App.config
- Abilitare il logging delle attività utilizzando il file appsettings.json
- Abilitare il logging delle attività nel codice del programma
- Un esempio di informazioni del file di log
API C# .NET per lavorare con i servizi Web di MS Exchange
Per gestire i servizi Web di MS Exchange, utilizzeremo Aspose.Email per .NET.
È un’API potente che consente di accedere a vari servizi di MS Exchange Server senza problemi. Inoltre, offre molte funzionalità per implementare applicazioni client di posta elettronica.
Puoi scaricare il DLL dell’API o installarlo da NuGet utilizzando il seguente comando.
PM> Install-Package Aspose.Email
Abilitare il logging delle attività utilizzando il file App.config
Questa opzione è adatta per le applicazioni in cui app.config
è il modo preferito per mantenere la configurazione dell’app.
I seguenti sono i passaggi per abilitare il logging in EWSClient in C#.
- Innanzitutto, aggiungi un file di configurazione dell’applicazione a un progetto C#, se non è già stato aggiunto.
- Quindi, aggiungi il seguente contenuto al file di configurazione.
<?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>
Possiamo vedere due sezioni di impostazione:
EWSDiagnosticLog
- Specifica il percorso relativo o assoluto al file di log.EWSDiagnosticLog_UseDate
- specifica se aggiungere una rappresentazione stringa della data corrente al nome del file di log.
Abilitare il logging delle attività utilizzando il file appsettings.json
Questa opzione è preferita per le applicazioni .NET Core.
I seguenti sono i passaggi per abilitare il logging in EWSClient in C#.
- Innanzitutto, aggiungi un file di configurazione
appsettings.json
a un progetto C#, se non è già stato aggiunto. Assicurati che il file di progetto contenga le seguenti righe nella sezione ItemGroup:
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
- Quindi, aggiungi il seguente contenuto al file appsettings.json.
{
"EWSDiagnosticLog": "ews.log",
"EWSDiagnosticLog_UseDate": true
}
Possiamo vedere due proprietà:
EWSDiagnosticLog
- Specifica il percorso relativo o assoluto al file di log.EWSDiagnosticLog_UseDate
- specifica se aggiungere una rappresentazione stringa della data corrente al nome del file di log.
Abilitare il logging delle attività nel codice del programma
Puoi anche abilitare il logging immediatamente nel codice. Nota: anche se hai già abilitato il logging utilizzando file di configurazione, questa opzione verrà applicata.
I seguenti sono i passaggi per abilitare il logging in EWSClient in C#.
- Prima, crea un EWSClient.
- Secondo, imposta il percorso del file di log utilizzando la proprietà LogFileName.
- Infine, imposta la proprietà UseDateInLogFileName se necessario.
using (var client = EWSClient.GetEWSClient("https://outlook.office365.com/EWS/Exchange.asmx", credentials))
{
client.LogFileName = @"Aspose.Email.EWS.log";
client.UseDateInLogFileName = false;
}
Un esempio di informazioni del file di log
Di seguito è riportato un esempio di voci del file di log quando viene eseguito il metodo ListMessages. Ogni nuova voce è preceduta da un timestamp.
Le seguenti voci possono essere distinte nel file di log:
- Intestazione del file di log. Include la versione di Aspose.Email, il nome e l’orario di inizio.
Aspose.Email for .NET [22.10.0.0] EWS Client diagnostic log
Iniziato: 07.11.2022 13:40:16
- Richiesta SOAP al server.
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>
- Intestazioni di risposta 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
- Risposta del server 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>
Ottieni una Licenza API Gratuita
Puoi ottenere una licenza temporanea gratuita per utilizzare Aspose.Email per .NET senza limitazioni di valutazione.
Conclusione
In questo articolo hai appreso come configurare il logging delle attività nel client EWS utilizzando C#. Questa funzionalità consente di avere un monitoraggio migliore della tua applicazione client. Inoltre, puoi esplorare la documentazione per leggere di più su Aspose.Email per .NET. Inoltre, puoi porre le tue domande tramite il nostro forum.