zoukankan      html  css  js  c++  java
  • 使用Trace实现程序日志

          在程序开发过程中,有时需要对程序运行状况做一些日志记录,以便以后查询,维护之用。
    有时我们可以使用开源日志组件,如log4net,nlog,EntLib Log等,但有时为简便,
    .netFramework中Trace,Debug就可以用来记录日志。并且也比较灵活。
    位于System.Diagnostice名称空间下。注意,只有当程序集用TRACE和DEBUG符号常量编译是时,
    这两个类才能正常工作。看代码:

    Code
    以上是一些简单应用,还可以使用TraceSource,TraceListener,

    .net Framework中提供以下的TraceListener:
    DefautTraceListener 默认的,数据流会重定向到Visual Studio的输出窗口

    TextWriterTraceListener 以文件流或文件方式追加写到文件。

    EventLogTraceListener 写Windows event log.

    EventProviderTraceListener 写和追踪Windows (ETW) subsystem in Windows Vista.

    WebPageTraceListener 写到一个ASP.NET web页面.

    TextWriterTraceListener 子类又有
      ConsoleTraceListener   
      DelimitedListTraceListener
      XmlWriterTraceListener  
      EventSchemaTraceListener 将端对端事件的跟踪或调试输出定向到 XML 编码的符合架构的日志文件

    注: EventSchemaTraceListener 是.net Framework 3.5 新增的。

    本文主要演示TextWriterTraceListener,TraceOutputOptions可以记录当前时间,调用堆栈,进程信息等,
    其它请参考MSDN。

    Code
    同时增加,多个
    Code

    注意:要调用Flush()方法后,才会把缓冲区内容写出去。cache只有4k,在Debug和Trace下使用任何文件流的listener,一个好的
    策略是设置AutoFlush属性为True。否则,如果出一个未处理的异常或严重错误,最少4k缓存诊断信息可能会丢失。

    使用配制文件,相关的选择项可在配制文件配制,推荐这种方法,比较灵活。
    <configuration>
      
    <system.diagnostics>
        
    <trace autoflush="false" indentsize="4">
          
    <listeners>
            
    <add name="myListener"
              type
    ="System.Diagnostics.TextWriterTraceListener"
              initializeData
    ="TextWriterOutput.log" />
            
    <remove name="Default" />
          
    </listeners>
        
    </trace>
      
    </system.diagnostics>
    </configuration>

     后记,我们还可以根据需要继承TextWriterTraceListener,定义我们自己的TraceListener.

    http://wintersun.cnblogs.com
  • 相关阅读:
    PAT (Advanced Level) Practice 1100 Mars Numbers (20分)
    PAT (Advanced Level) Practice 1107 Social Clusters (30分) (并查集)
    PAT (Advanced Level) Practice 1105 Spiral Matrix (25分)
    PAT (Advanced Level) Practice 1104 Sum of Number Segments (20分)
    PAT (Advanced Level) Practice 1111 Online Map (30分) (两次迪杰斯特拉混合)
    PAT (Advanced Level) Practice 1110 Complete Binary Tree (25分) (完全二叉树的判断+分享致命婴幼儿错误)
    PAT (Advanced Level) Practice 1109 Group Photo (25分)
    PAT (Advanced Level) Practice 1108 Finding Average (20分)
    P6225 [eJOI2019]异或橙子 树状数组 异或 位运算
    P4124 [CQOI2016]手机号码 数位DP
  • 原文地址:https://www.cnblogs.com/wintersun/p/1302760.html
Copyright © 2011-2022 走看看