• 使用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
  • 相关阅读:
    区块链技术栈-区块链账本
    (引文)可扩展的分布式数据库架构
    CentOS7 通过systemd 添加开机重启服务
    spring发布RMI服务(-)
    使用jdbc连接上oracle的两种方法
    用户态和内核态
    MySQL数据库备份还原(基于binlog的增量备份)
    分布式事务
    shuffle 过程
    MapReduce的流程
  • 原文地址:https://www.cnblogs.com/wintersun/p/1302760.html
Copyright © 2020-2023  润新知