使用配置文件中的数据写入事件日志

时间:2019-05-24 13:30:16

标签: c# trace event-log

我正在对Microsoft的“ C#编程”考试70-483进行一些实践测试,其中一个问题使我陷入困境,我对跟踪以正确地测试它也不了解。

问题是这样的:

您正在开发使用.config文件的应用程序。
.config文件的相关部分如下所示:

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

您需要确保使用.config文件中指定的配置将应用程序的诊断数据写入事件日志。 您应该在应用程序代码中包含什么?

A。 EventLog log = new EventLog(); <br/>log.WriteEntry("Trace data...");

B。 Debug.WriteLine("Trace data...");

C。 Console.SetOut(new StreamWriter("System.Diagnostics.EventLogTraceListener")); <br/>Console.WriteLine("Trace data...");

D。 Trace.WriteLine("Trace data...");

我在考虑“ C”,因为它是唯一与.config文件有关的选项。但是由于某些原因,它说正确的答案是“ D”。请记住,关于完全简单和明显的内容,这些问题以前是错误的,所以...

您能解释哪个是正确的答案以及为什么吗?

2 个答案:

答案 0 :(得分:3)

解决方案是针对read about tracing的,而不是试图找到正确的答案。

C绝对是最糟糕的-它不仅与System.Diagnostics或EventLog没有任何关系,而且还会尝试创建名为System.Diagnostics.EventLogTraceListener的文件。

实际使用System.Diagnostics的唯一选项是B和D。

app.config中的<system.diagnostics><trace>部分配置 System.Diagnostics类,包括源,侦听器,用于激活或停用应用程序中特定源的开关等。用于任何其他日志库(例如log4net,Serilog或NLog)的配置文件。

  • Debug.WriteLine("Trace data...");仅在调试版本中才将输出写入所有已配置的跟踪侦听器。

  • Trace.WriteLine("Trace data...");将在调试和发行版本中写入所有已配置的跟踪侦听器。

选项A也是错误的。它确实涉及事件日志,但由于未设置源而无法使用。 EventLog.WriteEntry也不发送任何可诊断的信息,它只是向事件日志中写入一条信息消息。

另一方面,System.Diagnostics侦听器将从.NET中的无数跟踪源(包括应用程序自身的跟踪源)接收诊断事件,对其进行过滤并将其写入目标。

例如,您在联网方面有问题吗?您可以打开System.Net跟踪侦听器,并从HTTP级别一直跟踪到套接字,SSL,TCP甚至数据包操作的跟踪消息。

答案 1 :(得分:0)

正确的答案是“ D”,该配置文件正在执行的操作是将一个实例添加到trace.Listeners。因此,每当调用Trace.WriteLine时,输出之一便是您在配置文件中设置的那个监听器。

“ C”也可以使用,但是它确实表明您需要确保使用配置文件,并且您在C中所做的操作与配置文件无关。