据我所知,有两种方法可以在 .NET 中创建跟踪消息。
System.Diagnostics.Trace 的静态方法:
Trace.WriteLine("Something happened");
System.Diagnostics.TraceSource的实例方法:
var ts = new TraceSource("TraceTest"); ts.TraceInformation("Something happened");
在我的 app.config 文件中,我可以为一切添加跟踪监听器:
<system.diagnostics>
<trace>
<listeners>
...
</listeners>
</trace>
</system.diagnostics>
或者对于一个特定的跟踪源:
<system.diagnostics>
<sources>
<source name="...">
<listeners>
...
</listeners>
</source>
</sources>
</system.diagnostics>
我的问题
如果我使用第一种方法(System.Diagnostics.Trace 的静态方法),使用哪个跟踪源名称?
我检查了 MSDN page of System.Diagnostics.Trace ,但在那里没有找到答案。
最佳答案
我用 JustDecompile 检查了 Trace.Writeline 的来源它枚举所有的听众并将消息发送给所有人:
foreach (TraceListener listener in TraceInternal.Listeners)
{
if (listener.IsThreadSafe)
{
listener.WriteLine(message);
if (!TraceInternal.AutoFlush)
{
continue;
}
listener.Flush();
}
else
{
lock (listener)
{
listener.WriteLine(message);
if (TraceInternal.AutoFlush)
{
listener.Flush();
}
}
}
}
但是忘记这个丑陋的 Trace 调用,使用 ETW Eventsource对于 much better tracing/logging
关于c# - System.Diagnostics.Trace.WriteLine 使用哪个跟踪源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34491311/