了解Trace如何在C#中工作

时间:2012-06-27 06:52:04

标签: 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");

我正在接受msdn link

的帮助

我的web.config中的设置如下

 <system.diagnostics>
 <trace autoflush="false" indentsize="4">
  <listeners>
    <add name="myListener"
      type="System.Diagnostics.EventLogTraceListener"
      initializeData="TraceListenerLog" />
  </listeners>
 </trace>
</system.diagnostics>

然而,当我运行此代码时,我不知道这个日志记录发生在哪里我在“应用程序和服务日志”下检查了事件查看器&#34;我期待用名称&#34; myEventLogSource&#34;创建一些新的日志。但事情并没有发生。

任何人都可以解释一下这是如何运作的。

1 个答案:

答案 0 :(得分: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");

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