我正在对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”。请记住,关于完全简单和明显的内容,这些问题以前是错误的,所以...
您能解释哪个是正确的答案以及为什么吗?
答案 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中所做的操作与配置文件无关。