• 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 方法

  • 相关阅读:
    jquery笔记
    css选择器
    Linq 巧用 Max,Sum
    Linq Aggregate
    Linq 对象的比较 Contains,Max
    Linq SelectMany 交叉连接
    JQ 标签相关知识
    C# HttpClient设置cookies的两种办法 (转发)
    使用 HttpClient 请求 Web Api
    MySQL 避免重复数据的批量插入与批量更新
  • 原文地址:https://www.cnblogs.com/teamleader/p/1939899.html
Copyright © 2020-2023  润新知