2010-09-02 3 views
6

Я хотел бы перенаправить все, зарегистрированное log4net, на классы System.Diagnostics Trace. Мое понимание того, что я должен делать, это указать log4net в system.diagnostics.traceappender, затем я настраиваю system.diagnostics. Вот важные детали в моем web.config:Log4net traceappender не регистрирует ничего

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

Я пропустил важный шаг, связанный с этим? Если я обойду log4net и просто создаю новый трассирующий ресурс, он войдет в мои источники.

ответ

3

я добавил вызов XmlConfigurator.Configure() и включен внутренний журнал. Я видел, что log4net регистрировался, но ничего не дошло до системы слежения. После игры с моим app.config какое-то время я нашел конфигурацию, которая сработала, наиболее заметные изменения, казалось, перерывали источники в моей конфигурации System.Diagnostics и следили за тем, чтобы был установлен атрибут уровня log4net. Рабочие секции конфигурации:

<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

Вы звоните в XmlConfigurator.Configure();?

Если это не проблема, вы можете либо включить внутреннюю отладку (пояснил here), либо настроить консольный appender и посмотреть, работает ли она.

Edit: Я не знаком с системой трассировки, но если настроить прослушиватель трассировки следующим образом, вы должны получить выход log4net:

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

Добавлен вызов XmlConfigurator.Configure, еще не войдя. Я попробую включить внутреннюю отладку. –

Смежные вопросы