miércoles, 5 de febrero de 2014

Uso de log4net con C#


Este es un ejemplo de como usar la librería log4net dentro de nuestra aplicación escrita con C# y usando Visual Studio 2010. Esta librería es muy útil si se desea registrar un log de eventos en diferentes fuentes como archivos, base de datos o enviar correos, etc. Todo esto sin necesidad de crear rutinas de accesos a base de datos o control de escritura en algún archivo de texto.

Este ejemplo se enfocará en crear un archivo de log que registre los diferentes tipos de mensajes de alerta, informativos y errores.

En primer lugar, deberemos acceder a la pagina web del proyecto log4net y descargar la librería.
http://logging.apache.org/log4net/

Ahora crearemos un pequeño aplicativo de escritorio para poder realizar el ejemplo. Este aplicativo contendrá un texto que podemos personalizar el mensaje, un check para simular una excepción y 5 botones que simularán los 5 tipos de mensajes que puede soportar log4net.


Para empezar debemos referencia la librería que previamente descargamos de la pagina web oficial en nuestro proyecto.



Ahora procederemos a registrar la librería en el proyecto. Para ello, tenemos que ingresar al archivo AssemblyInfo.cs tal como se muestra en la imagen.


Agregamos la siguiente linea en el archivo AssemblyInfo.cs

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Configuracion.log4net", Watch = true)]



Como detalle hay que verificar que se este usando el framework 4.0, ya que es la versión que se usará con la librería de log4net.



Ahora se deberá crear un archivo de configuración tal como se indico en la linea de que se agrego al archivo AssemblyInfo.cs y asegurarse que el archivo siempre se copie en el directorio del ejecutable.



En el archivo se tendrá que colocar la siguiente configuración que se encargará de realizar el registro de los mensajes dentro del archivo.



Con esto se logrará generar un archivo de log que contenga el mensaje que se le envié desde el aplicativo. Para realizar las pruebas se implementará el evento clic a cada botón 


Esta operación se repite por cada botón y solo se cambia el método de log por los siguientes:
- log.Debug
- log.Info
- log.Warn
- log.Error
- log.Fatal

Por ultimo, al ejecutar el aplicativo y darle clic a cada botón este registrará en el log que se configuro previamente.


Adjunto el código fuente como ejemplo en el siguiente link
private void btnDebug_Click(object sender, EventArgs e)
{
	try
	{
		if (this.chkError.Checked)
			try 
			{
				int iCero = 0;
				int iNum = 1 / iCero;
			}
			catch (Exception ex)
			{
				//Modo Nativo de LOG4NET
				//log.Debug(this.txtMessage.Text, ex);
				//Modo Personalizado
				log.Debug(string.Format("Objecto : {0} {1} Mensaje : {2} {3} Fuente  : {4}",
											ex.Source.ToString(),
											Environment.NewLine,
											ex.Message.ToString(),
											Environment.NewLine,
											ex.StackTrace.ToString()));
			}
			
		else
			log.Debug(this.txtMessage.Text);
	   
	}
	catch (Exception ex)
	{
		throw ex;
	}
}