vul*_*ino 5 .net logging trace system.diagnostics visual-studio-2010
在我的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>
[...]
Run Code Online (Sandbox Code Playgroud)
然后在代码中我调用这样的跟踪:
Public Shared Sub HandleException(ByVal ex As Exception)
Trace.WriteLine(ex.Message, "Error")
Run Code Online (Sandbox Code Playgroud)
[...]
我想,有些东西我想念.怎么说Trace方法正确的开关使用?我的应用程序用户如何更改配置文件以允许跟踪或禁用它?
谢谢.
您似乎将Trace.Write和Trace.WriteLine的日志记录/跟踪概念与使用TraceSource对象的日志记录/跟踪混合在一起.
TraceSource对象允许您单独控制(通过开关)"日志记录对象",以便您可以为某些代码打开日志,并为代码的其他部分关闭.TraceSource对象的输出可以配置为转到不同的TraceListeners(或同一个TraceListener).Trace.WriteLine并不是非常灵活.它只能与一个级别上进行配置(即全球范围内,你可以登录在调试或信息或其他),而与TraceSources,一个TraceSource可以在调试日志记录,另一个可以在信息被记录,而另外一个可能是完全关闭.
有关如何配置TraceSource以及如何在代码中使用它们的一些示例,请参阅这些链接中的答案.
将Trace方法添加到System.Diagnostics.TraceListener
关于您希望跟踪/日志记录在调试与发布中如何工作,您可以拥有两个不同的app.config文件.两者都将定义相同的TraceSources(即同一组"命名"跟踪/记录对象).在要与调试版本一起使用的app.config中,您可以将跟踪/日志记录级别设置为一个值Debug/Info/Whatever,您可以将输出定向到控制台和/或文件和/或其他任何内容.在要与调试版本一起使用的app.config中,您可以将跟踪/日志记录级别设置为不同的值(或关闭),并将输出定向到文件.
在上面的两篇文章中,我都包含了一些其他指向System.Diagnostics信息的链接,包括Ukadc.Diagnostics项目.此项目提供了一个非常有趣的格式化功能,可与基于System.Diagnostics的TraceListeners一起使用(前提是监听器来自Ukadc.Diagnostics),实际的跟踪/日志记录语句中没有任何更改.格式化功能类似于log4net和NLog提供的功能.
阅读我上面链接的信息,看看它是否有帮助.尝试使用TraceSources而不仅仅是Trace.WriteLine.当您对此感到满意时,可以查看Ukadc.Diagnostics.
| 归档时间: |
|
| 查看次数: |
3996 次 |
| 最近记录: |