====== Log4net ======
Librería para el tratamiento de logs para .NET basada en [[fw:log4j|log4j]]. Podemos bajárnoslo de [[http://logging.apache.org/log4net/|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");
===== Configuración =====
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:
* Elemento **appender** que indica como se guardará el log. Tiene una propiedad ''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:
* //file//: Nombre del fichero de log.
* //appendToFile//: Puede estar a true o a false, si está a true el log se almacena al final del fichero.
* //layout//: Indica el formato del log.
* Elemento **root** corresponde al logger genérico, para configurarlo utilizamos:
* //level//, indica el nivel de log (en orden ascendente: ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF, es decir si indicamos nivel ERROR sólo recibiremos mensajes de ERROR y FATAL).
* //appender-ref//: Define el identificador del log.
Un ejemplo de fichero xml de configuración:
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:
==== Más opciones de configuración ====
=== Indicar que se muestre en la consola de debug ===
Para ello agregaremos lo siguiente al archivo de configuración:
Y...
=== Utilizar varios loggers ===
Para definir otro logger haríamos:
Luego, en el código, lo llamaríamos así:
ILog segundoLogger = LogManager.GetLogger("segundoLogger");
=== Ejemplos de configuración ===
Puedes acceder a los ejemplos de configuración existentes en la [[http://logging.apache.org/log4net/release/config-examples.html|página oficial de log4net]]. Allí encontrarás ejemplos para utilizar Oracle, Access, SQLite, la consola... como salidas de log.
=== Indicar que no se bloquee el archivo ===
Lo haremos utilizando las propiedad ''lockingModel'':
===== Appenders =====
Son las clases encargadas de escribir en distintos medios el log.
==== Appenders en log4net ====
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 [[http://logging.apache.org/log4net/release/sdk/log4net.Appender.html|documentación de log4net]]
=== AdoNetAppender ===
Escribe los eventos de log en una base de datos.
=== AspNetTraceAppender ===
Escribe los eventos de log sobre una página ASP.
=== ConsoleAppender ===
Escribe los eventos de log sobre una aplicación de consola (ya sea a partir del flujo standard de salida o el de error).
=== EventLogAppender ===
Escribe los eventos de log sobre los sucesos de Windows.
=== FileAppender ===
Escribe los eventos de log sobre un fichero.
=== RollingFileAppender ===
Escribe los eventos de log sobre un fichero, puede ser configurado para crear varios ficheros restringiendo según el tamaño.