我正在学习如何使用.NET Tracing框架,而我却试图启用一些相当简单的日志记录。
我想使用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 :(得分:0)
.NET跟踪框架不支持此功能。它的设计理念是您只应该记录以诊断特定问题,因此您(可能)会知道哪些跟踪源适用。
如果您需要捕获所有日志记录,我会使用moles挂钩TraceSource
构建或轮询TraceSource.tracesources
(使用Reflection)。摩尔是优选的,因为它更清洁,支持,你不会丢失任何消息。请注意,这两种方法都不适用于生产代码;它们只能在开发过程中使用。