zoukankan      html  css  js  c++  java
  • Trace and Debug in .net

    在.net 1.0中使用Trace和Debug静态类用于跟踪诊断。
    Trace在Debug和Release下均可工作,而Debug只在Debug状态下好用。
    PrintRefresh, TraceError, TraceWarning...
    Trace.TraceXXX会输入类似这样的文本:
    ConsoleLab.vshost.exe Warning: 0 : Messages.....
    那个0是EventId, 永远是0.
     
    TextWriterTraceListener tr1 = new TextWriterTraceListener(Console.Out);
    Debug.Listeners.Add(tr1);
    TextWriterTraceListener tr2 = new TextWriterTraceListener(File.CreateText("output.txt"));
    Debug.Listeners.Add(tr2);
    Trace.TraceWarning("Trace Warning");
    Trace.TraceWarning("Trace Warning again");
    Trace.WriteLine("hello trace!");
    Console.Read();
    Trace和Debug是共享Listener的,从上面的代码可以看出来:Listener是加在Debug的Listeners属性上的,但是Trace也可用。
     
    TraceSwitch ts = new TraceSwitch("mySwitch", "in the Config file");
    ts.Level = TraceLevel.Verbose;
    Trace.WriteLineIf(ts.TraceError, "Error!!!");
    Trace.WriteLineIf(ts.TraceWarning, "Warning!!!");
    Trace.WriteLineIf(ts.TraceInfo, "Info!!!");
    Trace.WriteLineIf(ts.TraceVerbose, "Verbose!!!");

    TraceSwitch构造函数有2个重载(string name, string desc) (string name, string desc, string defaultValue)

    它会从配置文件中读取name对应的Level值,在无法从配置文件中找到level值时,第一个重载将level设置为Off,应用第二个重载可以指定默认值,这个默认值参数可以是1, 也可以是Error(不区分大小写)。

    TraceLevel枚举类别(Off(0), Error(1), Warning(2), Info(3), Verbose(4))

     

    TraceSwitch和Trace.TraceError, Trace.TraceWarning是没有关系的,Trace.TraceXXX总是会写入listener的

     

    <configuration>

     <system.diagnostics>

        <switches>

          <add name="mySwitch" value="1" />  任何大于 4 的数字都会被当作 Verbose,任何小于零的数字都会被当作 Off。

        </switches>

     </system.diagnostics>

    </configuration>

     

    TraceOptions Listener.TraceOutputOptions

    Callstack, DateTime, LogicalOperationStack, None, ProcessId, ThreadId, Timestamp

     

    <system.diagnostics>
            <trace autoflush="true">
                <listeners>
                    <add name="default" type="System.Diagnostics.TextWriterTraceListener" traceOutputOptions="ProcessId, DateTime" initializeData="Log.txt" />
                    <add name="db" type="ClassFullName,Assembly" initializeData="server=(local);database=demo.....;">
                        <filter type="System.Diagnostics.EventTypeFilter" initializeData="Warning" />
                    </add>
                </listeners>
            </trace>
    </system.diagnostics>
    貌似.net会自动识别带一个字符串参数的构造函数,并自动在构造时传入配置文件中的initializeData值
     
     
    System.Object 
      System.Diagnostics.TraceFilter
         System.Diagnostics.EventTypeFilter 
         System.Diagnostics.SourceFilter (TraceSoure名称)
     
    ShouldTrace 方法

  • 相关阅读:
    165. Compare Version Numbers
    163. Missing Ranges
    162. Find Peak Element
    161. One Edit Distance
    156. Binary Tree Upside Down
    工欲善其事-Eclipse设置
    2016年1月15日面试某互联网公司总结(一)
    以前用SQL实现的机构职能树,再看看
    Sublime3学习笔记
    Android之EACCES (Permission denied)与Permission denied异常探密
  • 原文地址:https://www.cnblogs.com/teamleader/p/1939899.html
Copyright © 2011-2022 走看看