2010-06-25 79 views
1

我正在學習如何使用.NET跟蹤框架,並且我試圖啓用一些相當簡單的日誌記錄。在特定嚴重級別啓用所有.NET跟蹤

我想使用MyApplication.exe.config文件將所有處於「警告」或更高級別的消息記錄到文本文件中。我想爲應用程序中的所有源啓用此功能,而無需在配置文件中指定它們。

在我的應用程序代碼,我打電話System.Diagnostics.PresentationTraceSources.Refresh();,在我.config我曾嘗試以下:

<configuration> 
<system.diagnostics> 
    <trace autoflush="true" indentsize="4"> 
     <listeners> 
      <add 
       name="myListener" 
       type="System.Diagnostics.TextWriterTraceListener" 
       initializeData="Trace.txt" /> 
     </listeners> 
    </trace> 
</system.diagnostics> 
</configuration> 

但是,這似乎並沒有記錄任何。

我唯一的成功來自明確列出.config文件中的所有來源;因爲我想要捕捉所有來源(即使那些我不能控制的來源),所以我想避免這種情況。

回答

0

.NET跟蹤框架不支持這一點。它的設計是從一個角度來設計的,即你應該只是記錄下來診斷一個特定的問題,所以你(大概)會知道哪些跟蹤源是適用的。

如果您需要捕獲所有日誌記錄,我會使用moles掛鉤TraceSource構建或輪詢TraceSource.tracesources(使用反射)。鼴鼠是最好的,因爲它更清潔,支持,你不會失去任何信息。請注意,這兩種方法都不適用於生產代碼;它們只能在開發過程中使用。