我有一个特定的代码框架,我有一个TraceListener定义有两个原因:
但是,我有一个程序集(不是我们的)记录了很多无意义的数据,无法帮助我们调试任何东西。如何关闭这个程序集的跟踪(或者,我们围绕它构建的外观项目),同时将其留给应用程序的其余部分?
我在外观项目中尝试过各种各样的配置,通常看起来如下,但无济于事。我尝试添加与<remove>
元素匹配的<add>
元素,这些元素首先设置了日志记录,尝试<clear>
,设置<trace enabled="false">
和至少三次其他尝试。感谢您提供的任何帮助!
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<clear/>
</listeners>
</trace>
<switches>
</switches>
</system.diagnostics>
答案 0 :(得分:3)
您可以编写自己的跟踪filter,以便与TraceListener一起使用。在此过滤器中,您可以在stackTrace中查找程序集并关闭事件跟踪。
在我的例子中,我根据EventTypeFilter编写了过滤器(参见:DotNetOpenAuthFilter),它只过滤来自DotNetOpenAuth库的事件。
然后将过滤器连接到web.config中的侦听器:
<configuration>
<system.diagnostics>
<trace>
<listeners>
<add name="console" type="System.Diagnostics.ConsoleTraceListener" >
<filter type="Common.Log.DotNetOpenAuthFilter, Common" initializeData="Warning" />
</add>
</listeners>
</trace>
</system.diagnostics>
</configuration>
答案 1 :(得分:0)
使用TraceSource。
在跟踪源中初始化它。
logger.TraceInformation("Hello from Class1");
从代码中的关键点调用它:
<system.diagnostics>
<trace autoflush="true"/>
<sources>
<source name="Class1" switchName="Class1Switch" switchType="System.Diagnostics.SourceSwitch">
<listeners>
<add name="console"></add>
<add name="csv" />
<!-- or you can add your own listener here -->
</listeners>
</source>
</sources>
<switches>
<add name="Class1Switch" value="Information" />
</switches>
<sharedListeners>
<add name="console" type="System.Diagnostics.ConsoleTraceListener" />
<add name="csv" type="System.Diagnostics.DelimitedListTraceListener"
delimiter="|" initializeData="d:\data\tracing\trace.log"
traceOutputOptions="Timestamp, ThreadId, LogicalOperationStack, DateTime, ProcessId">
</add>
</sharedListeners>
</system.diagnostics>
请务必编辑您的应用程序配置:
<add name="Class1Switch" value="Error" />
如果说,您只想记录错误,请更改开关:
<add name="Class1Switch" value="Off" />
完全关闭它:
Random