Log4net Creación de Logs

Log4net es una libreria que nos sirve para crear logs, para errores, info, depuración etc. Despues de usarlo por mas de un año, he descifrado la mejor forma de que funcione de manera que genere un log por día, que respete la extensión de archivo y que si un log llega a ser de mas de 10 megas, genere otro archivo.

Link de descarga de la librería.

Para saber como configurarlo para ASP.NET.

Configuración normal del web.config:

 

<configSections>

 

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>

 

</configSections> ...


* y mas abajo:

<log4net>

 

<logger name="default">

 

<level value="DEBUG"/>

 

</logger>

 

<root>

 

<level value="WARN" />

 

<appender-ref ref="LogFileAppender" />

 

</root>

 

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >

 

<param name="File" value="log/log.txt" />

 

<param name="AppendToFile" value="true" />

 

<rollingStyle value="Size" />

 

<maxSizeRollBackups value="10" />

 

<maximumFileSize value="10MB" />

 

<staticLogFileName value="true" />

 

<layout type="log4net.Layout.PatternLayout">

 

<param name="ConversionPattern" value="%-5p %d{yyyy-MM-dd hh:mm:ss} - %m%n" />

 

</layout>

 

</appender>

 

</log4net>

 

 


Para que funcione como lo mencione anteriormente se debe de configurar así:

 


web.config

En la parte de configuración:

<appender name="RollingLogFileAppender1" type="log4net.Appender.RollingFileAppender">
      <file value="App_Data\\logs\\INFO" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="-yyyy-MM-dd'.log'" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <param name="StaticLogFileName" value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level - %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="INFO" />
      </filter>
    </appender>

<logger name="file">
      <level value="INFO"/>
      <appender-ref ref="RollingLogFileAppender1"/>
</logger>

 


Lo anterior generará un archivo log para el nivel "INFO", puede generar uno para "ERROR" y otro para "DEBUG" cambiando:

<levelToMatch value="INFO" /> y agregando una configuración para otros logs.

Entonces para la clase:

// se crean las instancias de log4net:

private static log4net.ILog loggerInfo = log4net.LogManager.GetLogger("file");
private static log4net.ILog loggerError = log4net.LogManager.GetLogger("fileError");
private static log4net.ILog loggerDebug = log4net.LogManager.GetLogger("fileDebug");

y por ultimo dentro de la clase puede crear un metodo estatico para poder llamarlo desde cualquier otra clase o subclase:

public static void logInfo(String text)    {
            loggerInfo.Info(text);
    }