posts - 930,  comments - 588,  views - 401万
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

      在程序开发过程中,有时需要对程序运行状况做一些日志记录,以便以后查询,维护之用。
有时我们可以使用开源日志组件,如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
posted on   PetterLiu  阅读(2540)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示