【问题标题】:Specifying Conditional Trace Listener in Config在 Config 中指定条件跟踪侦听器
【发布时间】:2014-04-19 22:45:54
【问题描述】:

我想在我的代码中进行如下调用:

System.Diagnostics.Trace.WriteLine("Starting XYZ...");

并将其写入配置中描述的文件:

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

这很好用,除了对 WriteLine() 的现有调用与我添加的新代码行混在一起。

如何将我的跟踪记录写入一个日志文件并保持现有记录不变(在我修改之前根本没有配置,我希望现有跟踪按目前的方式处理)。

我知道这可以通过代码实现,但我想在配置文件中指定该文件并有条件地写入它。

【问题讨论】:

    标签: c# asp.net .net-4.0 system.diagnostics tracelistener


    【解决方案1】:

    刚刚明白你的问题在问什么。编辑了我的评论。您可以使用如下跟踪源:http://olondono.blogspot.com/2008/01/about-trace-listeners.html

    基本上你可以像这样修改你的配置文件:

        <system.diagnostics>
            <trace autoflush="true"/>
              <sources>
                <source name="myTraceSource"
                  switchName="mySwitch"
                  switchType="System.Diagnostics.SourceSwitch" >
               <listeners>
                <clear/>
                <add name="textwriterListener"
                 type="System.Diagnostics.TextWriterTraceListener"
                 initializeData="c:\myLog.txt" />
               </listeners>
             </source>
         </sources>
         <switches>
           <add name="mySwitch" value="Warning" />
         </switches>
       </system.diagnostics>
    

    然后在您的代码中,您可以执行以下操作:

        // First step: create the trace source object
        TraceSource ts = new TraceSource("myTraceSource");
    
        // Writing out some events
        ts.TraceEvent(TraceEventType.Warning, 0, "warning message");
        ts.TraceEvent(TraceEventType.Error, 0, "error message");
        ts.TraceEvent(TraceEventType.Information, 0, "information message");
        ts.TraceEvent(TraceEventType.Critical, 0, "critical message");
    

    【讨论】:

      【解决方案2】:

      您想使用 TraceSource,这允许您的应用写入 traceForStartUp、traceForPerfomance、joesTrace、legacyTraceThatIDontWantToCommentout,然后根据您感兴趣的跟踪类型打开或关闭它们。

      http://msdn.microsoft.com/en-us/library/ms228993%28v=vs.110%29.aspx

      您可以进一步过滤跟踪源,(即从 9 到 5 将跟踪发送到日志,但有一个不同的跟踪侦听器在几个小时后将跟踪发送到电子邮件侦听器)但我认为这不是您正在寻找的因为,它恰好是这个命名空间中的一个类的名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-24
        • 1970-01-01
        • 2015-02-25
        • 2016-05-12
        • 2013-04-15
        • 1970-01-01
        • 1970-01-01
        • 2019-10-02
        相关资源
        最近更新 更多