2010-09-02 184 views
6

我想將log4net記錄的所有內容重定向到System.Diagnostics跟蹤類。我理解我應該做的是在system.diagnostics.traceappender上指向log4net,然後配置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,只是創建一個新的traceource,它會登錄到我的資源。

回答

3

我添加了調用XmlConfigurator.Configure()和打開內部日誌記錄。我看到的是log4net正在進行日誌記錄,但沒有任何內容到達跟蹤系統。在玩了我的app.config一段時間後,我發現一個工作的配置,最顯着的變化似乎是在我的Systems.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,看看它是否工作。

編輯:我不是那個熟悉的跟蹤系統,但如果配置跟蹤偵聽如下,你應該得到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一個電話,依然沒有記錄。我會嘗試啓用內部調試。 – 2010-09-07 12:22:52