¡Esta es una revisión vieja del documento!
Librería para el tratamiento de logs para .NET basada en log4j. Podemos bajárnoslo de aquí.
Para poder escribir logs en la aplicación utilizamos objetos logger para instanciar un logger llamaremos al método GetLogger de la clase LogManager con un string, este corresponderá al nombre del objeto logger, si luego volvemos a llamarlo con el mismo nombre nos devolverá el mismo logger. Lo que nos devuelve es un ILog y será a partir del cual llamemos a sus métodos para escribir en el log:
ILog logger = LogManager.GetLogger("MyLogger"); logger.Debug("Mensaje de nivel DEBUG"); logger.Info("Mensaje de nivel INFO"); logger.Warn("Mensaje de nivel WARN"); logger.Error("Mensaje de nivel ERROR"); logger.Fatal("Mwnsaje de nivel FATAL");
Tras añadir el proyecto como referencia deberemos indicar cual será el fichero de configuración que utilice.
Podemos indicar que será un fichero concreto:
[assembly: log4net.Config.XmlConfigurator(ConfigFile="Web.config", Watch=true)]
O podemos indicar que tendrá el mismo nombre que la aplicación pero con una extensión específica (por ejemplo log4net):
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension="log4net", Watch=true)]
O por ejemplo indicar que será el fichero de configuración por defecto:
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension="config", Watch=true)]
La configuración se hace a partir de un fichero con formato xml con la siguiente estructura:
name con la cual se identificará luego. Por ejemplo, si indicamos que guardaremos en un fichero (indicando en la propiedad type el valor log4net.Appender.FileAppender) seguirá la siguiente estructura:Un ejemplo de fichero xml de configuración:
<?xml version="1.0" encoding="utf-8" ?> <log4net> <appender name="LogFile" type="log4net.Appender.FileAppender"> <file value="./web-serviceExample.log" /> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <appendToFile value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %level %thread %logger - %message%newline" /> </layout> </appender> <root> <level value="DEBUG" /> <appender-ref ref="LogFile" /> </root> </log4net>
Y aquí otro ejemplo, corresponde a una porción del fichero de configuración de la aplicación donde se inserta la configuración de log4net:
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net debug="true"> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="C:\\TestProj\\TestLog.txt" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="10MB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" /> </layout> </appender> <root> <level value="DEBUG" /> <appender-ref ref="RollingLogFileAppender" /> </root> </log4net>
Para ello agregaremos lo siguiente al archivo de configuración:
<appSettings> <add key="log4net.Internal.Debug" value="true" /> </appSettings>
Y…
<system.diagnostics> <trace autoflush="true"> <listeners> <add name="textWriterTraceListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\\TestProj\\TestProjlog4net.txt" /> </listeners> </trace> </system.diagnostics>
Para definir otro logger haríamos:
<logger name="segundoLogger"> <level value="ERROR" /> <appender-ref ref="OtroLogFile" /> </root>
Luego, en el código, lo llamaríamos así:
ILog segundoLogger = LogManager.GetLogger("segundoLogger");
Puedes acceder a los ejemplos de configuración existentes en la página oficial de log4net. Allí encontrarás ejemplos para utilizar Oracle, Access, SQLite, la consola… como salidas de log.
Lo haremos utilizando las propiedad lockingModel:
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
Son las clases encargadas de escribir en distintos medios el log.
Log4net ya contiene unos appenders configurados para volcar el log sobre alguna DB, o fichero… Los existentes los encontraremos en log4net.Appender y son los siguientes:
Para más información mirar en la documentación documentación de log4net
Escribe los eventos de log en una base de datos.
Escribe los eventos de log sobre una página ASP.
Escribe los eventos de log sobre una aplicación de consola (ya sea a partir del flujo standard de salida o el de error).
Escribe los eventos de log sobre los sucesos de Windows.
Escribe los eventos de log sobre un fichero.
Escribe los eventos de log sobre un fichero, puede ser configurado para crear varios ficheros restringiendo según el tamaño.