2010-09-02 16 views
6

Mi piacerebbe reindirizzare tutto ciò che è stato registrato da log4net alle classi System.Diagnostics Trace. La mia comprensione di ciò che dovrei fare è puntare log4net su system.diagnostics.traceappender, quindi configurare system.diagnostics. Ecco le parti importanti nel mio web.config:Log4net traceappender non registra nulla

<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> 

Mi sono perso un passaggio cruciale che collega le cose? Se ignoro log4net e creo solo una nuova origine di traccia, si collegherà alle mie fonti.

risposta

3

ho aggiunto la chiamata a XmlConfigurator.Configure() e attivato la registrazione interna. Quello che ho visto era log4net stava registrando, ma niente stava raggiungendo il sistema di tracciamento. Dopo aver giocato con il mio app.config per un po 'ho trovato una configurazione che funzionava, i cambiamenti più importanti sembravano essere abbandonare i sorgenti nella mia configurazione Systems.Diagnostics e assicurarmi che l'attributo di livello log4net fosse impostato. Di lavoro sezioni di configurazione:

<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

Hai chiamato il metodo XmlConfigurator.Configure();?

Se questo non è il problema, allora è possibile attivare il debug interno (spiegato here) o forse configurare un appender console e vedere se funziona.

Edit: Io non sono che la familiarità con il sistema traccia, ma se si configura un listener di analisi come segue si dovrebbe ottenere l'output log4net:

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

Aggiunto una chiamata a XmlConfigurator.Configure, ancora non la registrazione. Proverò a abilitare il debug interno. –