使用配置文件中的数据写入事件日志
Writing to event log by using data from config file
我正在为 Microsoft 的 "Programming in 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 文件中指定的配置写入事件日志。
您应该在应用程序代码中包含什么?
一个。 EventLog log = new EventLog();
<br/>log.WriteEntry("Trace data...");
乙。 Debug.WriteLine("Trace data...");
摄氏度。 Console.SetOut(new StreamWriter("System.Diagnostics.EventLogTraceListener")); <br/>Console.WriteLine("Trace data...");
D. Trace.WriteLine("Trace data...");
我在想 "C" 因为它是唯一与 .config 文件有 某些东西 的选项,但它说正确答案是 "D" 出于某种原因。请注意,这些问题之前关于完全简单明了的东西都是错误的,所以...
你能解释一下哪个是正确答案吗?为什么?
正确答案是 "D",那个配置文件在做什么.. 是向 trace.Listeners 添加一个实例。因此,每当您调用 Trace.WriteLine 时,输出之一将是您在配置文件中设置的监听器。
"C" 也可以,但是它确实说你需要确保你使用配置文件,而你在 C 中所做的与配置文件无关。
解决方案 是 read about tracing 而不是试图只找到正确答案。
C
绝对是最差的 - 它不仅 与 System.Diagnostics 或事件日志 无关 ,它还会尝试创建一个文件名为 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 甚至数据包操作的跟踪消息。
我正在为 Microsoft 的 "Programming in 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 文件中指定的配置写入事件日志。 您应该在应用程序代码中包含什么?
一个。 EventLog log = new EventLog();
<br/>log.WriteEntry("Trace data...");
乙。 Debug.WriteLine("Trace data...");
摄氏度。 Console.SetOut(new StreamWriter("System.Diagnostics.EventLogTraceListener")); <br/>Console.WriteLine("Trace data...");
D. Trace.WriteLine("Trace data...");
我在想 "C" 因为它是唯一与 .config 文件有 某些东西 的选项,但它说正确答案是 "D" 出于某种原因。请注意,这些问题之前关于完全简单明了的东西都是错误的,所以...
你能解释一下哪个是正确答案吗?为什么?
正确答案是 "D",那个配置文件在做什么.. 是向 trace.Listeners 添加一个实例。因此,每当您调用 Trace.WriteLine 时,输出之一将是您在配置文件中设置的监听器。
"C" 也可以,但是它确实说你需要确保你使用配置文件,而你在 C 中所做的与配置文件无关。
解决方案 是 read about tracing 而不是试图只找到正确答案。
C
绝对是最差的 - 它不仅 与 System.Diagnostics 或事件日志 无关 ,它还会尝试创建一个文件名为 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 甚至数据包操作的跟踪消息。