Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'esempio TracingAndLogging illustra come abilitare la traccia e la registrazione dei messaggi. Le tracce e i log dei messaggi risultanti vengono visualizzati usando lo strumento Visualizzatore traccia del servizio (SvcTraceViewer.exe). Questo esempio si basa sull'introduzione.
Annotazioni
La procedura di installazione e le istruzioni di compilazione per questo esempio si trovano alla fine di questo argomento.
Tracciamento
Windows Communication Foundation (WCF) usa il meccanismo di traccia definito nello System.Diagnostics spazio dei nomi. In questo modello di traccia i dati di traccia vengono generati da origini di traccia implementate dalle applicazioni. Ogni origine è identificata da un nome. I consumatori di traccia creano ascoltatori per le origini da cui desiderano recuperare informazioni. Per ricevere dati di traccia, è necessario creare un listener per la sorgente di traccia. In WCF questa operazione può essere eseguita aggiungendo il codice seguente al file di configurazione del servizio o del client impostando l'origine switchValuedi traccia del modello di servizio :
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information,ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-service.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
Per altre informazioni sulle origini di traccia, vedere la sezione Origine traccia nell'argomento Configurazione della traccia .
Tracciamento e propagazione delle attività
Dopo aver ActivityTracing abilitato e propagateActivity impostato true su nelle origini di system.ServiceModel traccia sia per il client che per il servizio, fornire la correlazione delle tracce all'interno di unità logiche di elaborazione (attività), tra le attività all'interno degli endpoint (tramite trasferimenti di attività) e tra le attività che si estendono su più endpoint (tramite la propagazione dell'ID attività).
Questi tre meccanismi (attività, trasferimenti e propagazione) consentono di individuare più rapidamente la causa radice di un errore usando lo strumento Visualizzatore traccia del servizio. Per altre informazioni, vedere Uso del Visualizzatore di traccia del servizio per la visualizzazione di tracce correlate e risoluzione dei problemi.
È possibile estendere la traccia fornita da ServiceModel creando tracce di attività definite dall'utente. La traccia delle attività definite dall'utente consente all'utente di creare attività di traccia per:
Raggruppare le tracce in unità logiche di lavoro.
Correlare le attività tramite trasferimenti e propagazione.
Ridurre il costo delle prestazioni della traccia WCF, ad esempio il costo dello spazio su disco di un file di log.
Per altre informazioni sulla traccia delle attività definite dall'utente, vedere l'esempio Extending Tracing (Estensione della traccia ).
Registrazione messaggi
La registrazione dei messaggi può essere abilitata sia nel client che nel servizio di qualsiasi applicazione WCF. Per abilitare la registrazione dei messaggi, è necessario aggiungere il codice seguente al client o al servizio:
<configuration>
<system.serviceModel>
<diagnostics>
<!-- Enable Message Logging here. -->
<!-- log all messages received or sent at the transport or service model levels -->
<messageLogging logEntireMessage="true"
maxMessagesToLog="300"
logMessagesAtServiceLevel="true"
logMalformedMessages="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
</system.serviceModel>
</configuration>
Quando viene registrato un messaggio, il tipo di traccia dipende dal fatto che venga tracciato nel client o nel server. Ad esempio, un messaggio "Add" inviato a un client viene tracciato nella categoria "TransportWrite" nel client, mentre lo stesso messaggio viene tracciato nella categoria "TransportRead" nel servizio.
Configurare il listener di traccia aggiungendo il codice seguente alla System.Diagnostics sezione del file App.config del client o al file Web.config del servizio:
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information,ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
I messaggi vengono registrati in formato XML nella directory di destinazione specificata nel file di configurazione.
Annotazioni
I file di traccia non vengono creati senza creare inizialmente la directory di log. Assicurarsi che la directory C:\logs\ esista o specificare una directory di registrazione alternativa nella configurazione del listener. Per altre informazioni, vedere le istruzioni di configurazione iniziali alla fine di questo documento.
Per altre informazioni sulla registrazione dei messaggi, vedere l'argomento Configurazione della registrazione messaggi .
Per configurare, compilare ed eseguire l'esempio
Assicurati di aver eseguito la procedura di installazione di One-Time per gli esempi di Windows Communication Foundation.
Prima di eseguire l'esempio di Tracciatura e Registrazione dei Messaggi, creare la directory C:\logs\ dove il servizio può scrivere i file .svclog. Il nome di questa directory viene definito nel file di configurazione come percorso delle tracce e dei messaggi da registrare e può essere modificato. Concedere al servizio di rete l'accesso in scrittura alla directory dei log.
Per compilare l'edizione C#, C++o Visual Basic .NET della soluzione, seguire le istruzioni in Compilazione degli esempi di Windows Communication Foundation.
Per eseguire l'esempio in un solo computer o tra computer diversi, seguire le istruzioni in Esecuzione degli esempi di Windows Communication Foundation.