技术开发 频道

在.Net中使用log4Net

  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

代码为:

ILog log=LogManager.GetLogger(“Exam.Log”);

log.Debug(“Hello”);

 

则输出为下面的形式:

Exam.Log - Hello

%L:输出语句所在的行号

%F:输出语句所在的文件名

%-数字:表示该项的最小长度,如果不够,则用空格填充

Log4net定义了一个叫做LogManager的类,用来管理所有的logger对象。它有一个GetLogger()静态方法,用我们提供的名字参数来检索已经存在的Logger对象。如果框架里不存在该Logger对象,它也会为我们创建一个Logger对象。代码如下所示:

log4net.ILog log = log4net.LogManager.GetLogger(Typeof(className));

通常来说,我们会以类(class)的类型(type)为参数来调用GetLogger(),以便跟踪我们正在进行日志记录的类。传递的类(class)的类型(type)可以用typeof(Classname)方法来获得,或者可以用如下的反射方法来获得:

System.Reflection.MethodBase.GetCurrentMethod().DeclaringType

 

 

0
相关文章