1,日志组件XLog
这里以日志组件XLog作为开头,不再以专门的概要或者目录说明开始,体现新生命开发团队组件体系的基本思想——追求实用,一切从简!
我写文档资料向来行文自如,没有统一的格式。基本上标题是粗体二号居中,正文是小四,段落首行缩进2字符,行间距1.5倍。我比较喜欢上彩色的代码,因为那样阅读起来非常舒服,有时候干脆直接用代码截图替代。
就让我们从日志组件XLog开始吧!
XLog是组件体系里面最最简单的一个组件,简单到只有“一个类一个方法”,也就是经常见到的XTrace.WriteLine。顾名思义,它的用途就是向日志文件输出一行日志!
可千万别小看这个功能,它有着非常重要的地位,基本上每一个基础组件都依赖于它。而它从来不参与业务(写日志文件跟业务实在扯不上关系),也就是说即使把它的调用代码从各个组件中移去,也不会影响组件的工作。
基本上,我们可以把XLog视为系统守护神,原因有如下几点:
1,在组件和应用系统程序中抛出日志,记录系统运行状况。由于ASP.Net、WinForm、Service和组件等程序的多样性,导致了没有统一的向界面展现运行状况的功能(废话,Service和组件根本就没有UI),而写日志文件,则是通用的。
2,在设计中,我喜欢多留几手。比如在ASP.Net中,建议实现Global.asa的OnError,把那些未处理异常信息通过XLog写入到本地日志中。经常,客户说报错的时候,作为开发人员,基本上不可能到第一现场观察错误提示,这也导致了异常定位非常的困难,大大增加了维护的成本。使用日志后,一旦某个页面出错,即使客户没有反馈,系统也能记录下来,为管理员修正错误以及优化系统提供足够丰富的信息。
3,XTrace有两个WriteLine方法,可别因为它们跟String.Format一样。而实际上也差不多,只不过支持格式化的WriteLine对时间类型的参数做了一些特殊处理。
4,XTrace的Debug属性就对应着AppConfig配置项的Debug项,本身没有任何用途,只是为其它程序提供是否工作在调试状态下做准备。
5,XTrace的DebugStack主要用于控件开发的事件中,输出当前方法调用树。
6,XTrace的OnWriteLog事件可以改变写日志的行为。XLog默认把日志写到文本文件中,当挂接OnWriteLog事件后,就变为有外部决定。最常用的就是控制台程序把日志重定向到控制台,WinForm程序把日志重定向到日志窗口。
7,当然,XLog还有WriteLogEventArgs类,用于定义写日志事件。
写日志还有一个关键问题,就是多线程并发问题。如果多个线程都写日志,怎么办?写日志毕竟是IO操作,会不会因为写日志而影响上层代码的执行效率?这些都是XLog所经历过,并且已经解决了的问题。
XLog作为其它组件的根基,仅仅是提供了写日志的简单功能,方便开发调试、运行检查、错误记录等情况,如果想记录操作日志,实在不是最佳选择。
一个组件,如果单独出来看技术,那就没有啥意思了。它还需要有合适的使用方案,才能发挥最大的功效,好马还需要伯乐呀。后面其它组件的讲解,大家将可以看到XLog的重要性!
/Files/nnhy/XLog_20100912113511.rar
大石头
新生命开发团队
2010-08-19 01:49