Estaba dando mantenimiento a un proyecto que fue desarrollado con Java (Struts), y en el código vi el uso de la API Apache Logging Services, puntualmente log4j, para registrar información de rastreo en un archivo.
Pero también hay una versión .Net de esta API: Log4net. Existen muchos otras APIs similares, hay para todos los gustos y colores. En esta entada mostraremos como usar la mencionada API:
Después de descargar Log4Net, y extraer el contenido hacemos lo siguiente:
1. Agregamos la referencia a nuestro proyecto (VS2005, VS2008, VS2010):
2. Configuramos que tipo de proveedor vamos a usar para guardar la información, puede ser un archivo de texto, SQL Server, Oracle, enviar emails, entre otros. Son dos partes principales: la declaración de la sección, y la definición de la sección misma. Si queremos agregar proveedores usamos el elemento appender:
1: <?xml version="1.0"?>
2: <configuration>
3: <configSections>
4: <section name="log4net"
5: type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
6: </configSections>
7: <log4net>
8: <root>
9: <level value="ALL"/>
10: <appender-ref ref="AdoNetAppender" />
11: </root>
12: <appender name="FileAppender"
13: type="log4net.appender.FileAppender">...</appender>
14: <appender name="AdoNetAppender"
15: type="log4net.Appender.AdoNetAppender">...</appender>
16: </log4net>
17: </configuration>
3. Escribimos el código para guardar los mensajes:
1: class Program
2: {
3:
4: static void ConfigureLog()
5: {
6: //Configurar Log, de acuerdo a la archivo app.config
7: log4net.Config.XmlConfigurator.Configure();
8: }
9:
10: static void Main(string[] args)
11: {
12: //SET UP, Configure Log
13: ConfigureLog();
14:
15: log4net.ILog logger = log4net.LogManager.GetLogger(typeof(Program));
16:
17: logger.Debug("Here is a debug log.");
18: logger.Info("... and an Info log.");
19: logger.Warn("... and a warning.");
20: logger.Error("... and an error.");
21: logger.Fatal("... and a fatal error.");
22:
23: Console.WriteLine("END --- PRESS ENTER");
24: Console.ReadLine();
25: }
26: }
4. Log en archivo de texto: , Log en Base de datos:
Nota: Para el tipo FileAppender, podemos establecer el patrón de como se guardará la información:
1: <appender name="FileAppender" type="log4net.appender.FileAppender">
2: <param name="File" value="C:tempmiPrimerLog4Net.txt" />
3: <param name="AppendToFile" value="true" />
4: <layout type="log4net.Layout.PatternLayout">
5: <param name="ConversionPattern" value="%d [%t] %-2p %c [%x] - %m%n" />
6: </layout>
7: </appender>
¿Ustedes qué usan para el Logging, alguna API pública o tienen sus propias clases?
Enlaces relacionados:
- Using log4net
- Log4Net with ASP.NET 3.5 – File Appender
- A Brief Introduction to the log4net logging library, using C#
- Quick and Dirty Guide to Configuring Log4Net For Web Applications
- 4 Tips for using Log4NET’s ADONetAppender in ASP.NET
- Using the log4net AdoNetAppender to log to a bit(boolean) column
- Can you pull the connectionString for a log4net AdoNetAppender from elsewhere in a web.config file?
Saludos,
Con la potencia que actualmente tiene System.Diagnostics usar Log4net en una aplicación debería estár penado.
Un saludo.