2012-07-19 35 views
6

Estoy intentando configurar Log4Net (esta es la primera vez que uso Log4Net) para iniciar sesión en un archivo de texto en un ensamblado. No recibo ningún error, pero tampoco funciona. Puedo definir las líneas en las que estoy registrando mi salida y ver que se alcanzan, pero como digo que no pasa nada.Configuración de Log4Net para registrar la salida desde una biblioteca de clases

¿Dónde me estoy equivocando?

he añadido lo siguiente a mi archivo packages.config, dentro del atributo <packages>:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender,log4net"> 
     <file value="c:\CTI\log.txt" /> 
     <appendToFile value="true" /> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %level %logger - %message%newline" /> 
     </layout> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
     <levelMin value="INFO" /> 
     <levelMax value="FATAL" /> 
     </filter> 
    </appender> 

    <root> 
     <level value="DEBUG"/> 
     <appender-ref ref="FileAppender"/> 
    </root> 
    </log4net> 
</configuration> 

He añadido la siguiente línea a AssemblyInfo.cs:

[assembly: log4net.Config.XmlConfigurator(Watch=true)] 

añadí el montaje Log4net usando NuGet y Estoy registrando de esta manera:

private log4net.ILog _Log; 
_Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 
_Log.Debug("FooBar"); 

Como digo, no hay errores, pero tampoco pasa nada.

¿Qué me estoy perdiendo?

Respuesta

6

Una cosa que está mal es que está agregando la sección de configuración de log4net al archivo de configuración nuget (packages.config).

Puede tener la configuración en la aplicación/configuración web o en un archivo separado al que apunta desde la configuración de la aplicación, p. Ej. configuración está en un archivo llamado config.log4net (el atributo copy to output directory del archivo se establece en copy always) y se agrega la siguiente entrada en app/web.config:

<add key="log4net.config" value="config.log4net"/> 

Si no quiere depender de una configuración web/aplicación, se puede establecer la propiedad ConfigFileExtension del atributo XmlConfiguratorAttribute en AssemblyInfo.cs:

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "log4net", Watch = true)] 

continuación, el nombre del archivo de configuración de log4net el mismo que su exe/montaje más la extensión configurada, por ejemplo, MyApplication.exe.log4net o MyLibrary.dll.log4net

Otra cosa que está mal es su filtro de appender. El rango que ha establecido excluye el nivel de DEPURACIÓN, que espera registrar. Aquí están todos logging levels:

ALL 
DEBUG 
INFO 
WARN 
ERROR 
FATAL 
OFF 

Como se puede ver, no es DEBUG entre INFO y FATAL.

Cuestiones relacionadas