NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码。
NLog是一个简单灵活的.NET日志记录类库。通过使用NLog,我们可以在任何一种.NET语言中输出
带有上下文的(contextual information)
调试诊断信息,根据喜好配置其表现样式之后发送到一个或多个
输出目标(target)
中。
NLog的
API
非常类似于
log4net
,且配置方式非常简单。NLog使用
路由表(routing table)
进行配置,但log4net却使用层次性的appender配置,这样就让NLog的配置文件非常容易阅读,并便于今后维护。
NLog遵从BSD license,即允许商业应用且完全开放源代码。任何人都可以免费使用并对其进行测试,然后通过邮件列表反馈问题以及建议。
NLog支持
.NET
、
C/C++
以及
COM interop
API,因此我们的程序、组件、包括用C++/COM 编写的遗留模块都可以通过同一个路由引擎将信息发送至NLog中。
NLog允许我们自定义从跟踪消息的
来源(source)
到记录跟踪信息的
目标(target)
的
规则(rules)
。记录跟踪信息的目标(target)可以为如下几种形元应棕式:
-
文件
-
文本控制台
-
Email
-
数据库
-
网络中的其它计算机(通过TCP或UDP)
-
基于MSMQ的消息队列
-
Windows系统日志
除此之外,每一条辨纸归跟踪消辩赠禁断息都可以自动带有
上下文信息(contextual information)
,并将其发燥垫旬送给记录跟踪信息的目标。这些上下文信息抹府可以包含如下内容:
-
当前的日期和时间(多种格式)
-
记录等级
-
来源名称
-
输出跟踪消习享多息的方法的堆栈信息
-
环境变量的值
-
异常的详细信息
-
计算机、进程和线程名称
每条跟踪信息都包含一个记录等级(log level)信息,用来描述该条信息的重要性。NLog支持如下几种记录等级:
-
Trace
- 最常见的记录信息,一般用于普通输出
-
Debug
- 同样是记录信息,不过出现的频率要比Trace少一些,一般用来调试程序
-
Info
- 信息类型的消息樱验担墓
-
Warn
- 警告信息,一般用于比较重要的场合
-
Error
- 错误信息
-
Fatal
- 致命异常信息。一般来讲,发生致命异常之后程序将无法继续执行。
NLog的.NET API的过滤信息功能执行效率很高,这样我们就可以一直保留程序中的日志写入代码,然后由NLog在运行时将其根据需要过滤掉。在一个1.6G单CPU笔记本电脑上,NLog每秒钟可以过滤掉1.5亿条日志写入语句!加上
异步处理(asynchronous processing)
以及其他
包装程序(wrappers)
的支持,NLog将成为一个极为强大的、且极具伸缩性的日志记录工具,