我们常常想快速的锁定程序的bug。
我们常常想通过查看文件就知道这段时间内程序的运行情况。
我们常常想通过查看数据库来了解用户对程序的操作情况。
我们甚至想,把这些数据都直接主动的发送到我的邮箱里。
事实上这些都很好搞定。
我们只需要 一个成熟优秀的日志框架来替我们做这些事情。像EnterpriseLibrary,ObjectGuy Framework,log4net,Nlog等都能满足你。
因为他们都有 一些共同的特点:
根据作用来分这些框架都会有以下组件或概念:记录器(Logger)、监视器/目标(Monitor /Target)、包装器(Wrapper)、过滤器(Filter)、布局(Layout)、严重性级别(Severity)。
1.记录器:日志的对象,可以同时连接一个或多个不同的监视器,记录各种不同的消息和信息。
2.监视器:用于存储和显示日志消息的媒介,有多种存在形式。如一般的文本文件、数据库、网络、控制台、邮箱等。
3.包装器:用于制定日志记录的方式。如:同步/异步记录,(出错时)回滚记录。
4.过滤器:用于根据严重性级别来过滤和忽略某类消息,只记录特定级别的日志消息。
5.布局:用于格式化输出。定义输出项和输出格式。
6.严重性级别:是对消息的分类,严重性级别表示消息的严重程度。也是过滤器的过滤依据。如:调试(DEBUG)、消息(INFO)、警告(WARN)、错误(ERROR)、严重错误(FATAL)严重性依次增强。
与上述对应的是一般的日志框架会提供的一些基本特性和功能:
1.记录简单的文本消息。
2.消息级别的过滤。
3.允许多个监视器。
4.记录消息种类和会话。
5.根据时间或大小将文件分割。
6.通过配置文件来控制日志,与代码分离。
但是他们还是有些区别的:
EnterpriseLibrary和ObjectGuy是部分收费的。
log4Net 和Nlog两个免费的开源框架,都支持.NET框架和跨平台,都有配置文件,都有丰富的监视器等等,都能满足绝大部分的需求。相比NLog支持异步记录,使得NLog的整体性能要优于log4net。NLog也有一些第三方图形查看器和分析器而且NLog使用起来非常方便(无论是通过代码还是配置文件)。
NLog
NLog允许我们自定义从跟踪消息的来源(source)到记录跟踪信息的目标(target)的规则(rules)。记录跟踪信息的目标(target)可以为如下几种形式:
除此之外,每一条跟踪消息都可以自动带有上下文信息(contextual information),并将其发送给记录跟踪信息的目标。这些上下文信息可以包含如下内容:
每条跟踪信息都包含一个记录等级(loglevel)信息,用来描述该条信息的重要性。NLog支持如下几种记录等级:
今后几篇博客会重点的介绍Nlog的实际的使用。敬请关注。