Trazando un servicio WCF

Muchas veces nos preguntabamos como realizar logs en nuestras aplicaciones, en mi opinión es una tarea que debemos de realizar o preveer siempre que desarrollamos un proyecto por los beneficios que nos aporta los cuales ya explicamos resumidamente aqui.

WCF nos ofrece una manera muy sencilla de poder introducir logs en nuestro servicio y no debe de haber excusa para no utilizarlo cuando desarrollemos.

Os imaginareis como se especifica un log en un servicio WCF???. pues como siempre a traves del fichero de configuracion. Tan sencillo como añadir en nuestro app.config o web.config la entrada

<system.diagnostics>
	<sources>
		<source 
		name="System.ServiceModel.MessageLogging" 
		switchValue="Verbose">
		<listeners>
			<add 
			name="xml" 
			type="System.Diagnostics.XmlWriterTraceListener" 
			initializeData="c:logsmessage.log" />
		</listeners>
		</source>
	</sources>
		<trace autoflush="true" />
	</system.diagnostics>
	<system.serviceModel>
	<diagnostics>
	<messageLogging logEntireMessage="true"
			maxMessagesToLog="300"
			logMessagesAtServiceLevel="false"
			logMalformedMessages="true"
			logMessagesAtTransportLevel="true" />
</diagnostics>

 

Estamos indicando con esta entrada en el fichero de configuración que se realizen logs y se guarden en el fichero c.logsmessage.log.

Si ejecutamos ahora el servicio, podemos observar que nos genera el fichero log, pero si lo abrimos lo unico que vamos a ver es una ristra de datos que nos echan para atras

 

Con lo que el log generado no me serviria de nada, ya que me costaria mas descifrar lo que me dice que el beneficio que me iba a dar. Pero de solucionar esto se han encargado los chicos del equipo de WCF y han realizado la herramienta Service Trace Viewer la cual nos ofrece la visión del log de una manera clara y sencilla y para uestra un boton. Abrimos el mismo archivo que teniamos antes con Service Trace Viewer y obtenemos

Donde podemos ver las cabeceras SOAP que se pasan, el mensaje (en este caso vemos que no esta encriptado porque utilizo basicHttpBinding)…

En definitiva una gran herramienta para nuestros desarrollos 

 

Technorati tags:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *