![]() |
1
35
我同意@Alex Humphrey关于尝试使用TraceSources的建议。使用TraceSources,您可以更好地控制日志/跟踪语句的执行方式。例如,您可以使用这样的代码:
TraceSource.TraceEvent调用将根据关联交换机的配置级别自动检查消息的级别(TraceEventType.Information),并确定是否应实际写出消息。 通过对每种类型使用不同名称的TraceSource,可以分别控制这些类的日志记录。您可以启用MyClass1日志记录,也可以禁用它,或者您可以启用它,但只有当消息级别(TraceEventType)大于某个值(可能只记录“Warning”或更高的值)时,才将其记录下来。同时,您可以打开或关闭MyClass2中的日志记录,或者将其设置为完全独立于MyClass1的级别。所有这些启用/禁用/级别的操作都发生在app.config文件中。 使用app.config文件,您还可以用相同的方式控制所有tracesource(或tracesource组)。所以,您可以配置为MyClass1和MyClass2都由同一个开关控制。
这样,您就可以使应用程序中的所有日志记录在同一级别上进行(或者关闭或转到同一个TraceListener,或者其他什么)。 您还可以将应用程序的不同部分配置为可独立配置,而无需在每种类型中定义唯一的TraceSource:
通过这种方式检测类,您可以将应用程序日志的“DataAccess”部分设置为一个级别,而将应用程序日志的“Analysis”部分设置为另一个级别(当然,可以将应用程序的任何一个或两个部分配置为禁用日志记录)。 以下是配置TraceSources和traceswitch的app.config文件的一部分:
或者,可以定义多个tracesource(并引用代码中相应的tracesource)和多个开关。交换机可以共享(即多个tracesource可以使用同一个交换机)。
以下是一些可能有助于您进行系统诊断的链接: .net Diagnostics best practices? What's the best approach to logging? Does the .Net TraceSource/TraceListener framework have something similar to log4net's Formatters? 在我发布的链接中,经常有关于“最佳”日志框架的讨论。我不是想说服你从System.Diagnostics改变。这些链接还倾向于提供有关使用System.Diagnostics的良好信息,这就是我发布它们的原因。 Ukadc.Diagnostics . 这是一个非常酷的System.Diagnostics附加库,它添加了丰富的格式化功能,类似于使用log4net和NLog。此库对您的应用程序施加仅配置依赖项,而不是代码或引用依赖项。 |
![]() |
2
3
你不能用这种方式关闭全局跟踪。
你必须
2) 将此开关与您使用的跟踪源关联:
如果使用静态方法
|
![]() |
3
2
需要记录时,请检查数据开关的状态,如下所示: http://msdn.microsoft.com/en-us/library/aa984285%28v=VS.71%29.aspx
然而,这是相当恶劣的,必须把这些支票到处。是你不想简单地删除
除此之外,我还将研究使用.NET 2.0+跟踪工具,其中包括
|
![]() |
4
1
|
![]() |
5
1
晚些时候加入app.config的快速脚注,以防这会让某些人少活几天: 假设您有包含classA的启动(.exe)projectA,它使用包含classB的projectB(.dll)。 ClassB反过来使用一个新的TraceSource(“ClassB”)实例。要配置它,您需要修改app.config或projectA。调整projectB的app.config不会有任何效果。
app.config中的节如果放在节之前,似乎会导致问题:
或在章节之后:
|
![]() |
6
0
试试这个简单的解决方案。在下面的例子中,“somenoiselibrary”在日志中乱扔许多无用的条目。我们用 “当条件” https://github.com/NLog/NLog/wiki/When-Filter
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
pseudodev · 失败的测试仅显示堆栈跟踪,不显示完整日志 4 月前 |
![]() |
CactusCake · if语句中应有分号 5 月前 |
![]() |
Bin4ry · 子文件夹中的应用程序设置 6 月前 |