Apache logging service开源项目提供了简单易用的日志服务,如上图所示它的子项目为.Net,Java,C++程序提供了日志功能。
本文主要对log4net的配置及使用进行一个简单的介绍。最后,考虑能否使用chainsaw图形界面的日志查看工具来查看服务端的日志信息。
1. log4net介绍
log4net作为Apache logging service的子项目,主要帮助我们在项目中将日志记录到各种输出目标中(控制台、文件、数据库等),能够方便开发者对程序进行调试和审计。
它的主要特征有:
2. log4net配置和使用实例
(1) 下载log4net:下载Binaries版本,解压后在/bin/net发现有针对.Net Framework的各个版本的log4net.dll。我们要使用/bin/net/4.0目录下的log4.dll。
如下图所示:
(2) 创建一个ASP.NET Web窗体应用程序,需注意的是在创建项目时要将选成.NET Framework 4.具体如下图所示:
(3) 将对应的log4net.dll复制到工程的bin目录下,并在工程中添加引用选择bin目录下的log4net.dll。
(4) 在添加引用后修改工程根目录下的Web.config文件。具体增加两部分内容,如下图所示:
注意:这里我们为了验证,将只在项目的根目录下创建一个mylogfile.txt文件用来记录日志。
(5)为了验证,我们打开工程的Global.asax文件,并在其中验证log4net.
我们在Application_Start下增加了三行代码,它们会在网站启动时刻运行。
(6) 验证:在工程的根目录下找到mylogfile.txt,其中记录了我们写入的内容,如下所示:
3. log4net配置参数详细说明
下图为log4net配置文件中参数的层级图,下面我们将分别对每一部分进行介绍:
(1) <appender>
允许有0或多个,它只能作为<log4net>的子元素,需注意的是每个appender的名字必须是唯一的,type也必须指定。
① 例子:
常用转换格式的介绍:
|
② filter是appender的一个重要部分,通过filter你可以指定日志级别,甚至查找消息中的关键字。
注意:当一个消息符合过滤器条件的时候,它将被写入日志,并且当前这个过滤器的处理就结束了,过滤器的顺序尤为重要。
级别范围过滤器:它将过滤级别在INFO和FATAL之间的日志,它隐含表示不再范围内的日志将被拒绝记录。
级别匹配过滤器:只针对单个级别进行匹配,它不隐含不匹配就拒绝记录日志,因此要在最后加上DenyAllFilter。
字符串匹配过滤器:第一个过滤器将在日志消息中查找'database',如果找到那么则记录,如果没有找到,第二个过滤器将在日志消息中查找'ldap'看其是否出现,如果找到那么则记录,如果没有找到到达过滤器DenyAllFilter,它将会拒绝所有到达它的日志消息。
(2) <logger>
除了root logger外,log4net允许你定义一些额外的logger来进行日志操作。
例如,下面有个logger用来将来自OtherClass类对象的日志写到控制台中:
注意这里的logger名称是带命名空间的完整的类名称,如果你想监测整个命名空间,这里只要改成命名空间名称即可。
(3) <root>
在<log4net>中只能定义一个唯一的root
① 例子:
<appender-ref>标签定义日志对象使用的Appender对象。它声明了在其他地方定义的Appender对象的一个引用。
所有的logger都会从root logger继承相关属性。
附:日志等级
日志等级 | 说明 |
OFF | 不会产生日志(等级最高) |
FATAL | |
ERROR | |
WARN | |
INFO | |
DEBUG | |
ALL | 所有操作都会产生日志(最低) |
4. chainsaw