2010-08-25 15 views
23

Tengo dos proyectos configurados de forma idéntica para log4net. Un proyecto registra bien; sin embargo, el otro no se conecta en absoluto.log4net no leerá desde app.config

El Logger en el proyecto que no está registrando rendimientos IsFatalEnabled = false, IsErrorEnabled = false, IsWarnEnabled = false, IsInforEnabled = false y IsDebugEnabled = false.

He copiado y pegado de un proyecto a otro, he reemplazado el archivo por completo y he intentado eliminar todos los espacios en blanco.

¿Qué podría estar haciendo que un proyecto no esté leyendo correctamente los niveles correctos desde la aplicación.config?

app.config:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
     <file value="logfile.txt" /> 
     <appendToFile value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date: %-5level – %message%newline" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="FileAppender" /> 
    </root> 
    </log4net> 
</configuration> 

Program.cs

using log4net; 

class Program 
{ 
    private static readonly ILog Log = LogManager.GetLogger("SO"); 

    static void Main(string[] args) 
    { 
     Log.Info("SO starting"); 
    } 
} 

Respuesta

40

Parece que el archivo app.config no estaba configurado para ser vistos por log4net.

que añade la siguiente línea al AssemblyInfo.cs y el registro está habilitado ahora:

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

extraño, ya que no añadir esta línea al proyecto que estaba trabajando.

EDIT:

Parece que el proyecto que estaba trabajando tenía la línea después de todo. Debo haberlo olvidado.

// This will cause log4net to look for a configuration file 
// called [ThisApp].exe.config in the application base 
// directory (i.e. the directory containing [ThisApp].exe) 
// The config file will be watched for changes. 
[assembly: log4net.Config.XmlConfigurator(Watch = true)] 
+2

mi caso fue aproximadamente la misma - He copiado un proyecto a otro proyecto, pero "envuelta" log4net en el montaje personalizado con mi código de utilidad - aunque la línea mágica que mencionas fue en el nuevo proyecto, que le faltaba a el AssemblyInfo.cs de mi ensamblado personalizado (tuve la impresión de que toda la configuración tenía que hacerse en el ensamblado que contenía el punto de entrada - incorrecto) –

+2

Tenía que hacer esto para una aplicación VB.NET ... sintaxis:

Cuestiones relacionadas