代码之家  ›  专栏  ›  技术社区  ›  Hans Rudel

打开和关闭跟踪,并在运行时指定文件路径

  •  2
  • Hans Rudel  · 技术社区  · 13 年前

    我对以下内容感到好奇:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.diagnostics>
        <trace autoflush="false" indentsize="4">
          <listeners>
            <add name="logger" type="System.Diagnostics.TextWriterTraceListener"
                 initializeData="LoggingFile.txt" />
            <remove name="Default" />
          </listeners>
        </trace>
      </system.diagnostics>
    </configuration>
    

    我想在我的解决方案中包括记录错误消息和堆栈跟踪的选项。但我需要能够打开和关闭它。这可以通过评论中的所有内容来实现吗 System.Diagnostics ?或者有更好的方法吗?

    是否可以指定记录器在运行时写入的文件?

    1 回复  |  直到 9 年前
        1
  •  4
  •   Community Mohan Dere    9 年前

    您可以使用 源交换机 它允许您 跟踪不同级别的消息 。首先将一些设置添加到 app.config

    <system.diagnostics>
      <sources>
        <source name="TraceTest" switchName="SourceSwitch"
                switchType="System.Diagnostics.SourceSwitch">
          <listeners>
                <!-- choose one or use multiple TraceListeners -->
                <add name="console" type="System.Diagnostics.ConsoleTraceListener"
                     initializeData="false"/>
                <add name="file" type="System.Diagnostics.TextWriterTraceListener"
                     initializeData="error.log"/>
                <remove name ="Default"/>
          </listeners>
        </source>
       </sources>
       <switches>
        <!--  MSDN: 4 verbose Information, Information 3, Warning 2, Error 1, -->
        <add name="SourceSwitch" value="Error"/>
      </switches>
      <trace autoflush="true" indentsize="4"/>
    </system.diagnostics>
    

    在应用程序中,您可以使用 TraceSource 引用app.config中定义的名称的对象

    TraceSource ts = new TraceSource("TraceTest");
    ts.TraceEvent(TraceEventType.Information, 123, "event info");
    ts.TraceEvent(TraceEventType.Error, 123, "event error");
    ts.TraceEvent(TraceEventType.Warning, 123, "event warning");
    
    ts.TraceInformation("any text");
    ts.Flush();
    ts.Close();
    

    有关一些常见信息,请查看 How to: Use TraceSource ... 在MSDN上。使用谷歌博士,我发现了一个相关的 question at SO 指的是 very good blogpost 关于此事。

    有一件事我想指出。。。

    更改侦听器写入跟踪消息的级别

    配置文件初始化跟踪源的设置 在初始化应用程序时。 更改这些设置 您必须更改配置文件并重新启动应用程序,或者 使用TraceRefresh以编程方式刷新应用程序 方法 。应用程序可以动态更改由 配置文件以覆盖用户指定的任何设置。 例如,您可能希望确保关键消息 始终发送到文本文件,无论当前配置如何 设置。

    推荐文章