Log e Trace di servizi WCF

E’ da un paio di giorni che sto cercando di capire la configurazione migliore per abilitare il log dei messaggi di alcuni servizi WCF.

Ricordo per chi non lo sapesse che WCF permette di abilitare il log e il trace di tutto ciò che avviene direttamente dall’app.config dell’applicazione che utilizza il servizio.
Per ulteriori informazioni guardate su MSDN la guida per la configurazione del log dei messaggi e la configurazione del tracing del servizio

La seguente configurazione permette di loggare gli errori generati da wcf (lo fa con il primo source System.ServiceModel) e tutti i messaggi che il client e il servizio si scambiano (tramite il secondo source System.ServiceModel.MessageLogging). lasciando stare tutto quel log (che per il mio caso era inutile) definito tracing.

La configurazione migliore è la seguente:

<system.diagnostics>

<sources>

<source name=System.ServiceModel switchValue=Error propagateActivity=true>

<listeners>

<add name=xmlTrace />

</listeners>

</source>

<source name=System.ServiceModel.MessageLogging switchValue=Verbose>

<listeners>

<add name=xmlTrace />

</listeners>

</source>

</sources>

<sharedListeners>

<add name=xmlTrace type=System.Diagnostics.XmlWriterTraceListener

initializeData=c:TracesMyTrace2.svclog />

</sharedListeners>

<trace autoflush=true />

</system.diagnostics>


Inoltre è da aggiungere anche la parte seguente sotto il nodo <system.serviceModel> questo definisce che tipi di messaggi loggare, la grandezza e la quantità:

<diagnostics>

<messageLogging maxMessagesToLog=100

logEntireMessage=true

logMessagesAtServiceLevel=true

logMalformedMessages=true

logMessagesAtTransportLevel=true>

</messageLogging>

</diagnostics>


Attenzione: Se per qualche motivo i messaggi non vengono loggati o avete un comportamento strano da parte del servizio cambiate switchValue=Verbose” anche per la parte di tracing ossia nel Source System.ServiceModel questo vi permetterà di vedere tutto quello che succede nel servizio. Vi consiglio comunque di disabilitare il livello verbose dopo che avete trovato il problema per evitare di avere dei log esagerati ed inutili.

Leave a comment

Your comment