在我的 app.config 中,我想设置 3 个跟踪级别(开关?):详细、警告和无。
在代码的调试版本中,我希望详细开关处于活动状态,在发布版本中我希望发出警告。在特殊情况下,我的应用程序用户可以修改配置文件以禁用所有跟踪。
我希望调试跟踪输出在控制台上,而发布跟踪仅输出到日志文件。
我写了以下内容:
[...]
<system.diagnostics>
<sources>
<!-- This section defines the logging configuration for My.Application.Log -->
<source name="debug" switchName="debug">
<listeners>
<add name="FileLog"/>
<add name="console"/>
</listeners>
</source>
<source name="release" switchName="release">
<listeners>
<add name="FileLog"/>
</listeners>
</source>
<source name="silent" switchName="none">
<listeners/>
</source>
</sources>
<switches>
<add name="debug" value="Verbose"/>
<add name="release" value="Warning"/>
<add name="none" value="Off"/>
</switches>
<!--<sharedListeners>
<add name="FileLog" type="System.Diagnostics.TextWriterTraceListener" traceOutputOptions="DateTime" initializeData="felix.log"/>
<add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false" />
</sharedListeners>-->
<trace autoflush="false" indentsize="4">
<listeners>
<add name="FileLog" type="System.Diagnostics.TextWriterTraceListener" traceOutputOptions="DateTime" initializeData="felix.log"/>
<add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false"/>
<remove name="Default"/>
</listeners>
</trace>
</system.diagnostics>
[...]
然后在代码中我这样调用跟踪:
Public Shared Sub HandleException(ByVal ex As Exception)
Trace.WriteLine(ex.Message, "Error")
[...]
我想我缺少一些东西。我该如何告诉 Trace 方法使用正确的开关?我的应用程序用户如何更改配置文件以允许跟踪或禁用它?
Thanks.
您似乎将通过 Trace.Write 和 Trace.WriteLine 进行日志记录/跟踪的概念与使用 TraceSource 对象进行日志记录/跟踪的概念混合在一起。
TraceSource 对象允许您拥有可单独控制(通过开关)的“日志记录对象”,这样您就可以为某些代码打开日志记录,并为代码的其他部分关闭日志记录。 TraceSource 对象的输出可以配置为转到不同的 TraceListener(或相同的 TraceListener)。 Trace.WriteLine 并不是非常灵活。它只能配置为一个级别(即,在全局范围内,您可以在“调试”或“信息”或其他任何位置进行日志记录),而使用 TraceSources,一个 TraceSource 可以在“调试”处进行日志记录,另一个可以在“信息”处进行日志记录,而另一个可以完全关闭。
请参阅这些链接中我的答案,了解如何配置 TraceSource 以及如何在代码中使用它们的一些示例。
如何跨类使用TraceSource
通过 app.config 关闭跟踪
最好的日志记录方法是什么?
将 Trace 方法添加到 System.Diagnostics.TraceListener
关于您希望跟踪/日志记录在调试与发布中如何工作,您可以有两个不同的 app.config 文件。两者都会定义相同的 TraceSource(即同一组“命名”跟踪/日志记录对象)。在与调试版本一起使用的 app.config 中,您可以将跟踪/日志记录级别设置为一个值 Debug/Info/Whatever,并且您可以将输出定向到控制台和/或文件和/或其他内容。在与调试版本一起使用的 app.config 中,您可以将跟踪/日志记录级别设置为不同的值(或关闭)并将输出定向到文件。
在上面的两篇文章中,我都包含了有关 System.Diagnostics 信息的其他几个链接,包括Ukadc.诊断项目。该项目提供了一个非常有趣的格式化功能,可与基于 System.Diagnostics 的 TraceListener 一起使用(前提是侦听器来自 Ukadc.Diagnostics),而无需对实际跟踪/日志记录语句进行任何更改。格式化功能与 log4net 和 NLog 提供的类似。
阅读我上面链接的信息,看看是否有帮助。尝试使用 TraceSources 而不仅仅是 Trace.WriteLine。当您对此感到满意时,也许可以查看 Ukadc.Diagnostics。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)