您的位置:首页 > 其它

Log4net简介及在项目中的简单应用

2009-10-15 22:11 288 查看
Log4net 是一个开源的类库,可以通过它将.NET 应用程序的日志记录到多种介质中(控制台、SMTP或者文本文件等)。Log4net 起源自Java应用中的log4J.

日志的记录通过一个或多个logger来实现。logger为日志信息提供了五种不同级别(由低至高):

1.Debug

2.Information

3.Warnings

4.Error

5.Fatal

每一个logger可以记录指定级别的日志信息,因此,5种不同级别的信息处理可有效帮助开发,而当项目发布后,你可以选择只记录Fatal级别的日志,这一切的配置都非常简单。

如何指定日志信息保存的地址呢?Appender用于指定保存日志信息保存的路径。利用Appender可以将日志信息保存至数据库、email等。你可以通过配置使用多个Appender,用于向多个介质中存储日志信息并可控制记录不同级别的日志信息。Appender的配置在一个外置的XML文件中,配置它是一件极其简单的事。

OK,我们知道通过Logger将日志信息保存到Appender指定的路径,而怎么指定日志信息保存的格式呢?Log4net通过配置每一个Appender的layouts来指定记录日志信息的格式。这些layouts指定日志信息是保有存为简单的文本还是XML文件,或是不是记录日志信息生成的时间等。

下面用代码说明如何使用Log4net

Web config

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<configSections>

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>

</configSections>

<log4net>

<appender name="LogFileAppender" type="log4net.Appender.FileAppender">

<param name="File" value="LogTest.text"/>

<param name="AppendToFile" value="true"/>

<layout type="log4net.Layout.PatternLayout">

<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>

</layout>

</appender>

<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">

<layout type="log4net.Layout.PatternLayout">

<param name="Header" value="[Header]\r\n"/>

<param name="Footer" value="[Footer]\r\n"/>

<param name="ConversionPattern" value="%d %-5p -- Line:%L %F  %c %m%n"/>

</layout>

</appender>

<root>

<level value="Info"/>      <!--value可以指定Debug/Info/Warn/Error/Fatal中的任意一种-->

<appender-ref ref="LogFileAppender"/>

<appender-ref ref="ConsoleAppender"/>

</root>

</log4net>

</configuration>

控制台输出:





文本输出:





layout 的参数ConversionPattern的值的含义:

%d(date time):当前语句执行的时间

%p(priority):日志当前级别(Debug,Info,eg)

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

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

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

%m(message):当前记录的日志信息

%n(new line):换行

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

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

%-数字:表示该项的最小长度,不够用空格填充(如%-5p)

注意:%后的字母区分大小写

根据应用程序需要可创建多个logger记录不同信息,如一个logger专门记录bug信息,而另一个logger专门记录网站流量信息,关于如何创建多个logger,

具体可参考:http://www.codeproject.com/KB/trace/log4net_intro2.aspx

关于logger对象的叠加,root 与自定义的logger之间存在继承关系(root 为父对象,自定义的logger为子对象),如果新建一个logger不与root 存在继承关系,可通过设置属性 additivity="false" 来完成。

具体可参考:http://raderustc.blog.ccidnet.com/blog-htm-do-showone-type-blog-itemid-144436-uid-1406.html

本文部分翻译自:http://www.codeproject.com/KB/trace/log4net_intro.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: