了解Trace如何在C#中工作

Yas*_*ser 10 c# trace

我想了解跟踪是如何工作的

我创建了一个简单的新Web项目.这是我可以使用的代码

// Create a trace listener for the event log.
EventLogTraceListener myTraceListener = new EventLogTraceListener("myEventLogSource");

// Add the event log trace listener to the collection.
Trace.Listeners.Add(myTraceListener);

// Write output to the event log.
Trace.WriteLine("Test output");
Run Code Online (Sandbox Code Playgroud)

我正在从这个msdn链接中获取帮助

我的web.config中的设置如下

 <system.diagnostics>
 <trace autoflush="false" indentsize="4">
  <listeners>
    <add name="myListener"
      type="System.Diagnostics.EventLogTraceListener"
      initializeData="TraceListenerLog" />
  </listeners>
 </trace>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此代码时,我不知道这个日志记录发生在哪里我检查了事件查看器,在"应用程序和服务日志"下,我期望创建一些名为"myEventLogSource"的新日志但是没有发生.

请任何人解释一下这是如何工作的.

Iva*_*n G 7

在Application log下,检查是否有两个写入Application日志的Source,一个是TraceListenerLog,另一个是myEventLogSource.不会创建新日志,它们都将使用应用程序日志.如果要创建新日志并且想要向其写入跟踪输出,则可以这样做(当然,日志名称不必等于源名称):

        string logSource = "_myEventLogSource";
        if (!EventLog.SourceExists(logSource))
            EventLog.CreateEventSource(logSource, logSource);

        EventLogTraceListener myTraceListener = new EventLogTraceListener(logSource);

        // Add the event log trace listener to the collection.
        System.Diagnostics.Trace.Listeners.Add(myTraceListener);

        // Write output to the event log.
        System.Diagnostics.Trace.WriteLine("Test output");
Run Code Online (Sandbox Code Playgroud)

即使源不存在,跟踪信息也会被写入应用程序日志下的事件日志,并带有您传递给EventLogTraceListener构造函数的源名称.