我遵循了这篇Create a Logger using the Trace Listener in C#文章,认为只会在Trace.WriteLine()
文件中写入application.log
语句:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="application.log" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
但令我沮丧的是,我过去Debug.WriteLine()
标签的所有Output
都从该标签中消失了,而现在他们都转到跟踪文件application.log
。
有没有办法将仅 Trace.WriteLine()
语句指向application.log
?
如果没有,WriteLine()
到我自己的文件的最简单方法是什么,我只选择登录到该文件,而不是整个调试会话?
答案 0 :(得分:5)
在<remove name="Default" />
时不确定您的期望但是从配置中删除该行会让您在“输出”选项卡中返回输出。您可以看到DefaultTraceListener使用OutputDebugString方法,该方法允许VS在“输出”选项卡中显示日志。
Traces发送给所有侦听器,侦听器本身可以进行过滤。
如果您想对痕迹进行更多分类 - 请参阅TraceSource中System.Diagnostic命名空间中的其他类,其中包含How to - Trace Source中的示例:
private static TraceSource mySource = new TraceSource("TraceSourceApp");
...
mySource.TraceEvent(TraceEventType.Error, 1, "Error message.");