当前位置: 代码迷 >> Web前端 >> 在.Net中应用log4Net
  详细解决方案

在.Net中应用log4Net

热度:170   发布时间:2012-10-15 09:45:24.0
在.Net中使用log4Net
1:写在前面:

? 由于最近在项目中用到了log4Net,所以拿来和大家分享一下,我们都知道在开发项目中,大家有可能会用到日志功能,记录日志的方法很多,在.net中微软为我们提供了EntLib(Enterprise library ) Logging Application Block日志记录模块;另外我们也可以使用Apache的log4net日志模块,当然了我们也可以用自己的方法来记录日志,不管使用什么方法来记录日志,我们的目的就是在项目部署以后,能够很快定位程序中的bug,提高我们解决bug效率。了解整个系统的运行情况,因为我们在开发阶段我们可以通过调试来检查bug,一旦程序部署了以后,使用这种方法也许不太可能了。所以日志是我们找出原因的最佳路径,由于log4net支待多平台,且运行效率要比EntLib来的高,不过据说log4Net已以很久没有更新了,我们暂且不关注这个。本文部分内容翻译于http://logging.apache.org/log4net.

? 2:Log4net DLL

? 要想在我们的项目中能够使用Log4net ,我们需要引用Log4net dll文件,这个文件我们可以从官方站下载

? http://logging.apache.org/log4net/download.html??? 这是一个solution需要编译后才可以产生dll文件.

? 以可以从CSDN上下载:

? http://download.csdn.net/source/839743

? 3:Log4Net的特性

?

  • Support for multiple frameworks(目前好像只有1.0.1.1,2.0的版本,没有3.5的)
  • Output to multiple logging targets
  • Hierarchical logging architecture
  • XML Configuration
  • Dynamic Configuration(可以在程序运行的时候修改配置文件)
  • Logging Context
  • Proven architecture
  • Modular and extensible design
  • High performance with flexibility

    ?

    ?

    ? 4:Log4Net的结构

    ? Log4net有三个主要的组件,他们分别是:loggers,appenders and layouts。

    ? Logger是最主要的组件,它用来产生日志消息。日志需要经过Layout的格式化处理后才会输出。就类似于文件流,Logger就是用来产生文件流的,Layout就是定义文件流输出的格式,是二进制流还是Xml等等. appenders 就类似于输出文件流,文件流的位置,如控制台还是文本等等.所以理解这三者的关系后,我们就可以使用Log4Net了.Logger提供了多种方式来记录一个日志消息,你可以在你的应用程序里创建多个Logger,每个实例化的Logger对象都被log4net框架作为命名实体来维护。这意味着为了重用Logger对象,你不必将它在不同的类或对象间传递,只需要用它的名字为参数调用就可以了。Log4net框架定义了一个ILog接口,所有的logger类都必须实现这个接口。ILog接口的部分代码定义如下:

    ?Layout的转换模式:

    ?

    %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息

    %n(new line):换行

    %d(datetime):输出当前语句运行的时刻

    %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数

    %t(thread id):当前语句所在的线程ID

    %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等

    %c(class):当前日志对象的名称,例如:

    模式字符串为:%-10c -%m%n

    代码为:

    <!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->ILog log