Apache Logging service—Log4net的使用介绍

Apache Logging service—Log4net的使用介绍_第1张图片

Apache logging service开源项目提供了简单易用的日志服务,如上图所示它的子项目为.Net,Java,C++程序提供了日志功能。

本文主要对log4net的配置及使用进行一个简单的介绍。最后,考虑能否使用chainsaw图形界面的日志查看工具来查看服务端的日志信息。

1. log4net介绍

log4net作为Apache logging service的子项目,主要帮助我们在项目中将日志记录到各种输出目标中(控制台、文件、数据库等),能够方便开发者对程序进行调试和审计。

它的主要特征有:

  • 支持多数框架(Support for multiple frameworks)
  • 可输出日志到多种目标(Output to multiple logging targets)
  • 层级日志体系(Hierarchical logging architecture)
  • 可使用XML配置(XML Configuration)
  • 可动态配置(Dynamic Configuration)
  • 记录上下文(Logging Context)
  • 被检验过的体系(Proven architecture)
  • 模块化和可扩展的设计(Modular and extensible design)
  • 灵活且高效(High performance with flexibility)
详情见:http://logging.apache.org/log4net/

2. log4net配置和使用实例

(1) 下载log4net:下载Binaries版本,解压后在/bin/net发现有针对.Net Framework的各个版本的log4net.dll。我们要使用/bin/net/4.0目录下的log4.dll。

如下图所示:

Apache Logging service—Log4net的使用介绍_第2张图片


(2) 创建一个ASP.NET Web窗体应用程序,需注意的是在创建项目时要将选成.NET Framework 4.具体如下图所示:

Apache Logging service—Log4net的使用介绍_第3张图片


(3) 将对应的log4net.dll复制到工程的bin目录下,并在工程中添加引用选择bin目录下的log4net.dll。


(4) 在添加引用后修改工程根目录下的Web.config文件。具体增加两部分内容,如下图所示:

Apache Logging service—Log4net的使用介绍_第4张图片

注意:这里我们为了验证,将只在项目的根目录下创建一个mylogfile.txt文件用来记录日志。


(5)为了验证,我们打开工程的Global.asax文件,并在其中验证log4net.

Apache Logging service—Log4net的使用介绍_第5张图片

我们在Application_Start下增加了三行代码,它们会在网站启动时刻运行。


(6) 验证:在工程的根目录下找到mylogfile.txt,其中记录了我们写入的内容,如下所示:



3. log4net配置参数详细说明

下图为log4net配置文件中参数的层级图,下面我们将分别对每一部分进行介绍:

Apache Logging service—Log4net的使用介绍_第6张图片

(1) <appender>

允许有0或多个,它只能作为<log4net>的子元素,需注意的是每个appender的名字必须是唯一的,type也必须指定。

① 例子:

Apache Logging service—Log4net的使用介绍_第7张图片

                                                             常用转换格式的介绍:
      转换格式       简介
%date 将时间以本地时区格式输出
%thread 发起写日志的线程名称
%-5level 用于指定等级,-5在字符串右边补空格满五个字符为止
%message 输出的日志消息
%newline 转换为指定平台的换行符

② filter是appender的一个重要部分,通过filter你可以指定日志级别,甚至查找消息中的关键字。

注意:当一个消息符合过滤器条件的时候,它将被写入日志,并且当前这个过滤器的处理就结束了,过滤器的顺序尤为重要。

级别范围过滤器:它将过滤级别在INFO和FATAL之间的日志,它隐含表示不再范围内的日志将被拒绝记录。


级别匹配过滤器:只针对单个级别进行匹配,它不隐含不匹配就拒绝记录日志,因此要在最后加上DenyAllFilter。


字符串匹配过滤器:第一个过滤器将在日志消息中查找'database',如果找到那么则记录,如果没有找到,第二个过滤器将在日志消息中查找'ldap'看其是否出现,如果找到那么则记录,如果没有找到到达过滤器DenyAllFilter,它将会拒绝所有到达它的日志消息。

Apache Logging service—Log4net的使用介绍_第8张图片


(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



你可能感兴趣的:(C#,log4net)