Thursday, November 10, 2011

Iniciando con Log4net

En el software development, el escribir una bitácora de todo lo que pasa en el sistema es una buena práctica. ¿Por qué? Porque podrían ocurrir errores no controlados que son difíciles de rastrear. Por ello, atrapar el error y registrar lo que sucedió es una info muy preciada más todavía cuando ya se está en entorno de producción.

Log4net nos brinda esa solución.

Log4Net es un framework portado de la librería log4java, el cual te ofrece todas las herramientas posibles para poder hacer un logging, control de errores, monitorización de aplicaciones para todas tus aplicaciones posibles. Log4net es un producto gratuito ofrecido por Apache. http://logging.apache.org/log4net/index.html

LEVELS

Log4NET ofrece distintos niveles de monitorización predefinidos como son:

1. Debug: Se utiliza para líneas de debug.
2. Info: Se utiliza para dar información relativa de nuestra aplicación.
3. Warn: Son posibles puntos de ruptura de nuestro software: posibles alertas importantes.
4. Error: Se utiliza para detectar errores de nuestro software.
5. Fatal: Se utiliza para detectar posibles errores importantes de software, es decir, que impidan el funcionamiento del mismo por ejemplo.

APPENDERS

Es el modo en que los distintos niveles del log4net van a ser monitorizados/logeados, en log4net existen estos entre otros:

1. FileAppender: Logea el nivel definido en la configuración en fichero.
2. RollingFileAppender: Logea el nivel definido en la configuración en un fichero que va rotando dependiendo de su peso.
3. SmtpAppender: Logea el nivel definido en la configuracion y es enviado a un destinatario de correo.
4. ConsoleAppender: Usualmente es para testing pero funciona también en production. Escribe en el output window o en el command window si estás usando console application.
5. AdoNetAppender.

Para poner en marcha Log4net en tu aplicación necesitamos 3 elementos básicamente: la Configuración, el Setup y el Call.

Un Ejemplo Básico

Primero, debés bajarte la DLL de log4net. La podés bajar desde aqui
http://www.4shared.com/file/C37E3-aG/log4net.html

Contraseña: princesita

Luego lo agregas a tu proyecto.

Ahora, necesitamos configurar el web.config (app.config si tu aplicación es windows) Una configuración con lo suficiente sería la siguiente:



Como appender, estoy utilizando el RollingFileAppender. Creo que es el preferido.
En la etiqueta File debes colocar dónde se guardará el log.
conversionpattern es cómo se escribirá el texto del log, es decir, el formato.

En la clase donde utilizarás el logger, debes crearte un objeto de tipo ILog. Construirlo y empezar a llamarlo desde los lugares que desees. Checka el ejemplo, dentro de la función que me ejecuta un Select, voy a llamar al logger para registrar un ERROR. A propósito, le envío un SELECT con error para que se pueda registrar en el log.

Imports System.Data.SqlClient
Imports System.Text
Imports System.Configuration
Imports log4net

Public Class clsDataBase
Private strConn As String
Private log As ILog

Public Sub New()
strConn = ConfigurationManager.ConnectionStrings("CadenaDeConexion").ConnectionString
log = LogManager.GetLogger("lmendivil")
log4net.Config.XmlConfigurator.Configure()
End Sub

Public Function fncConsultar(ByVal strSQL As String) As DataTable
Dim objConn As New SqlConnection(strConn)
Dim objComm As New SqlCommand(strSQL, objConn)
Dim objAdap As New SqlDataAdapter(objComm)
Dim ds As New DataSet
Try
objConn.Open()
objAdap.Fill(ds)
Return ds.Tables(0)
Catch ex As Exception
log.Error(Me.getErrorSQL(strSQL), ex)
Throw New Exception(ex.Message)
Finally
objConn.Close()
End Try

End Function

Public Function getErrorSQL(ByVal sql As String) As String
Dim strErrorSQL As New stringbuilder
strErrorSQL.AppendFormat("SQL: {0}", sql)
strErrorSQL.AppendLine()
Return strErrorSQL.ToString
End Function
End Class


Así es como se puede leer en el archivo bitacora.log


La línea roja que pinté está mostrando el FORMATO que previamente configuré en el web.config dentro de la etiqueta "conversionpattern", lo recuerdas? Checka que estoy mostrando:
LA FECHA, LA HORA, EL LEVEL, EL LOGGER, EL MÉTODO DESDE DONDE SE HACE EL LLAMADO, Y EL MENSAJSE

HaPPy LoGGinG =)

No comments:

Post a Comment