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

  • 相关阅读:
    linux基础命令笔记
    linux日常常用命令分析
    43.QQ聊天软件GUI窗口编写
    42.线程概念及线程池
    pycham中报:ModuleNotFoundError: No module named 'pymysql'
    python os模块
    python用类的方式创建线程---自创建类
    python server端并发聊天
    python文件上传
    python编码--解码
  • 原文地址:https://www.cnblogs.com/teamleader/p/1939899.html
Copyright © 2011-2022 走看看