C# 设置自动刷新.Net跟踪侦听器的日志记录级别

C# 设置自动刷新.Net跟踪侦听器的日志记录级别,c#,asp.net,web-config,C#,Asp.net,Web Config,在.NET4.0Web服务中,我使用跟踪自动刷新写入日志文件 通过在web.config中添加以下内容: <trace autoflush="true" > <listeners> <add name="TextWriter" type="System.Diagnostics.TextWriterTraceListener" initializeData="trace.log" > </add&g

在.NET4.0Web服务中,我使用跟踪自动刷新写入日志文件

通过在web.config中添加以下内容:

<trace autoflush="true" >
  <listeners>
    <add name="TextWriter"
         type="System.Diagnostics.TextWriterTraceListener" 
         initializeData="trace.log" >
    </add>
  </listeners>
</trace>

我试图找到一种只记录Trace.TraceError(“错误信息”)并排除Trace.TraceInformation(“一些详细的调试内容”)的方法,而不改变我的代码,只改变web.config

我在MSDN上找到的信息显示了如何通过添加调用Trace.Flush()的代码以及添加源、开关和sharedlisteners来实现这一点,但是我希望继续使用自动刷新,而不是更改代码

非常感谢:)

旧答案:

这似乎是不可能的。跟踪自动刷新没有 在web.config中设置其级别的容量

更新:

侦听器可能会应用以下筛选器

<configuration>
<system.diagnostics>
    <trace autoflush="true"  >
        <listeners>
            <add name="TextWriter"
                     type="System.Diagnostics.TextWriterTraceListener"
                     initializeData="trace4.log" >
                <filter type="System.Diagnostics.EventTypeFilter" initializeData="Warning" />
            </add>
        </listeners>
    </trace>
</system.diagnostics>

请注意,initializeData是一个字符串,可以采用警告或错误值。这会相应地过滤跟踪输出

非常感谢Josip跟进这个问题。

也许您可以使用“”这样做:

<system.diagnostics>
    <trace autoflush="true">
    </trace>
    <sources>
        <source name="SCInterface" switchType="System.Diagnostics.SourceSwitch" **switchValue**="All">
            <listeners>
                <remove name="default"/>
                <add name="HSInterface"
                type="XYZ.Diagnostics.CyclicTextTraceListener, XYZ.Base3x"
                initializeData="D:\Trace\HSR.HSInterface.Trace.log, Size, 10, 5"
                traceOutputOptions="DateTime,ThreadId,Callstack" />
            </listeners>
        </source>
    </sources>
</system.diagnostics>


对于开关值,您将显示警告或错误…

这对我来说是个新闻,非常有趣。你试过了吗?我会尝试一下,并相应地更新我的答案,如果我能让它为我工作。Cheers我现在已经尝试过了,如果没有代码更改,源代码的使用似乎不起作用,但是我发现过滤器可以应用于侦听器。我的答案已相应更新。谢谢:)