2010-06-25 58 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(使用反射)。鼹鼠是最好的,因为它更清洁,支持,你不会失去任何信息。请注意,这两种方法都不适用于生产代码;它们只能在开发过程中使用。