c# - System.Diagnostics.Trace.WriteLine 使用哪个跟踪源?

标签 c# .net trace system.diagnostics

据我所知,有两种方法可以在 .NET 中创建跟踪消息。

  1. System.Diagnostics.Trace 的静态方法:

    Trace.WriteLine("Something happened");
    
  2. 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/

相关文章:

linux - 从关闭的文件描述符中读取

c# - 是否可以将默认引用分配给 Unity 中的非 MonoBehaviour 类

c# - XElement.Load ("~/App_Data/file.xml") 找不到路径的一部分

C#:将 DllImport 与继承相结合?

c# - 如果它是空的 ('' ) 字符串,则忽略属性来自 Json/Api Response C#

c# - 无法使用 C# 中的 TraceSource 方法写入日志文件

c# - 如何以编程方式添加 RollingFlatFileTraceListenerData

c# - 我可以仅使用套接字在 Java 和 C# 之间进行通信吗?

c# - 自托管Net Core 3应用不走端口设置

c# - 为什么我在安装 VS2012/.Net 4.5 后在 .Net 4.0 Assembly.GetCustomAttributes 上出现 ExecutionEngineException?