我对以下内容感到好奇:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="logger" type="System.Diagnostics.TextWriterTraceListener"
initializeData="LoggingFile.txt" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
我想在我的解决方案中包含选项,以记录错误消息和堆栈跟踪。但我需要能够打开和关闭它。这可以通过评论System.Diagnostics
中的所有内容来实现吗?或者,还有更好的方法?
是否可以指定记录器在运行时写入的文件?
答案 0 :(得分:4)
您可以使用 SourceSwitch ,它可以跟踪不同级别的消息。首先将一些设置添加到app.config
<system.diagnostics>
<sources>
<source name="TraceTest" switchName="SourceSwitch"
switchType="System.Diagnostics.SourceSwitch">
<listeners>
<!-- choose one or use multiple TraceListeners -->
<add name="console" type="System.Diagnostics.ConsoleTraceListener"
initializeData="false"/>
<add name="file" type="System.Diagnostics.TextWriterTraceListener"
initializeData="error.log"/>
<remove name ="Default"/>
</listeners>
</source>
</sources>
<switches>
<!-- MSDN: 4 verbose Information, Information 3, Warning 2, Error 1, -->
<add name="SourceSwitch" value="Error"/>
</switches>
<trace autoflush="true" indentsize="4"/>
</system.diagnostics>
在您的应用程序中,您可以使用引用app.config中定义名称的TraceSource对象来跟踪消息
TraceSource ts = new TraceSource("TraceTest");
ts.TraceEvent(TraceEventType.Information, 123, "event info");
ts.TraceEvent(TraceEventType.Error, 123, "event error");
ts.TraceEvent(TraceEventType.Warning, 123, "event warning");
ts.TraceInformation("any text");
ts.Flush();
ts.Close();
有些常见信息,请查看MSDN上的How to: Use TraceSource ...。使用谷歌博士,我发现了一个相关的question at SO,指的是关于此问题的very good blogpost。
有一件事我想指出......
更改侦听器写入跟踪消息的级别
配置文件初始化跟踪源的设置 在应用程序初始化时。 要更改这些设置 您必须更改配置文件并重新启动应用程序或 使用TraceRefresh以编程方式刷新应用程序 方法即可。应用程序可以动态更改设置的属性 配置文件覆盖用户指定的任何设置。 例如,您可能希望确保关键消息是 无论当前配置如何,始终发送到文本文件 设置。