2010-09-02 16 views
6

Me gustaría redireccionar todo lo registrado por log4net a las clases System.Diagnostics Trace. Mi comprensión de lo que debería hacer es señalar log4net en system.diagnostics.traceappender, luego configuro system.diagnostics. Aquí hay partes importantes en mi web.config:Log4net traceappender no iniciando sesión

<log4net> 
<appender name="trace" type="log4net.Appender.TraceAppender, log4net"> 
    <immediateFlush value="true" /> 
    <layout type="log4net.Layout.PatternLayout,log4net"> 
    <param name="ConversionPattern" 
     value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n" /> 
    </layout> 
</appender> 

<root> 
    <priority value="DEBUG"/> 
    <appender-ref ref="trace"/> 
</root>  
</log4net> 


<system.diagnostics> 
<sources> 

    <source name="Console" switchName="DefaultSwitch"> 
    <listeners> 
     <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
     <filter type="" /> 
     </add> 
    </listeners> 
    </source> 

    <source name="Metabase" switchName="MetabaseSwitch"> 
    <listeners> 
     <add name="MetabaseListener" /> 
     <remove name="Default" /> 
    </listeners> 
    </source> 

    <source name="TextFile" switchName="TextFileSwitch"> 
    <listeners> 
     <add name="TextFileListener" /> 
     <remove name="Default" /> 
    </listeners> 
    </source> 

</sources> 
<sharedListeners> 
    <!--<add name="ConsoleListener" type="XXX.Manufacturing.Utilities.Diagnostics.ColorConsoleTraceListener,XXX.Manufacturing.Utilities" />--> 
    <add name ="TextFileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TextFile.log" /> 
    <add name="MetabaseListener" type="XXX.Manufacturing.Utilities.Diagnostics.MetabaseTraceListener,XXX.Metabase.Proxies" /> 
</sharedListeners> 
<switches> 
    <add name="MetabaseSwitch" value="Information" /> 
    <add name="DefaultSwitch" value="Verbose" /> 
    <add name="TextFileSwitch" value="Verbose"/> 
</switches> 
</system.diagnostics> 

¿Echaba de menos un paso crucial que vinculaba las cosas? Si omito log4net y simplemente creo un nuevo origen de trazado, se conectará a mis fuentes.

Respuesta

3

que añade la llamada a XmlConfigurator.Configure() y activado el registro interno. Lo que vi fue que log4net estaba registrando, pero nada estaba llegando al sistema de rastreo. Después de jugar con mi app.config por un tiempo, encontré una configuración que funcionaba, la mayoría de los cambios notables parecían estar abandonando las fuentes en mi configuración de Systems.Diagnostics y asegurándome de que el atributo de nivel de log4net estuviera establecido. Que trabajan secciones de configuración:

<log4net> 
<appender name="trace" type="log4net.Appender.TraceAppender, log4net"> 
    <immediateFlush value="true" /> 
    <layout type="log4net.Layout.PatternLayout,log4net"> 
    <param name="ConversionPattern" 
     value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n" /> 
    </layout> 
</appender> 

<root> 
    <level value="ALL"/> 
    <appender-ref ref="trace"/> 
</root>  
</log4net> 

<system.diagnostics> 
<trace autoflush="true" > 
    <listeners> 
    <add name="TextFileListener" /> 
    <add name="MetabaseListener" /> 
    </listeners> 
</trace> 
<sharedListeners> 
    <add name ="TextFileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TextFile.log" /> 
    <add name="MetabaseListener" type="XXXX.Manufacturing.Utilities.Diagnostics.MetabaseTraceListener, XXXX.Metabase.Proxies" /> 
</sharedListeners> 

3

¿Ha llamado al método XmlConfigurator.Configure();?

Si ese no es el problema, entonces puede activar la depuración interna (explica here) o quizás configurar un appender de consola y ver si está funcionando.

Editar: No soy tan familiarizados con el sistema de seguimiento, pero si se configura una escucha de seguimiento de la siguiente manera usted debe obtener la salida log4net:

<system.diagnostics> 
    <trace autoflush="true"> 
    <listeners> 
     <add 
     name="textWriterTraceListener" 
     type="System.Diagnostics.TextWriterTraceListener" 
     initializeData="C:\temp\log4net.txt" /> 
    </listeners> 
    </trace> 
</system.diagnostics> 
+0

añadido una llamada a XmlConfigurator.Configure, todavía no madereras. Intentaré habilitar la depuración interna. –

Cuestiones relacionadas