Log4Net 使用简介

前言

本文主要介绍了log4net这个类库以及它在winform程序下的简单用法。


什么是log4net

Log4net是帮助程序输出日志内容到不同目标中的一个类库。Log4net类库其实是Log4j框架向.NET运行时转变的一个类库。我们保留log4j的核心框架,并在.NET运行时中增加了新的特性。目前最新版本1.2.10.0,更多信息请参见官方网站http://logging.apache.org/log4net/


Log4net日志级别

日志级别由低到高分为以下几种:


1. DEBUG
2. INFO
3. WARN
4. ERROR
5. FATAL
如果我设置了级别为警告级别(WARN),则DEBUGINFO级别的日志不会显示,只会显示本身和更高级别。


Log4net配置文件

它使用xml配置节点来使用,例如:

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

<log4net>

<appender name='LogFileAppender' type='log4net.Appender.RollingFileAppender' >

<param name='File' value='d:\log\Applog.txt'/> //日志存放路径

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

<param name='datePattern' value='yyyy_MM_dd.lo\g' />

<param name='StaticLogFileName' value='false'/>

<param name='ImmediateFlush' value='true'/>//是否及时写入,这样可以提高速度

<param name='MaxSizeRollBackups' value='-1'/>

<param name='MaximumFileSize' value='5MB'/> //文件大小

<param name='RollingStyle' value='size'/> //分类的类型

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

<param name='ConversionPattern' value='[%date{HH:mm:ss,fff}][%5.5level][%method][%line]: %message %newline'/>

</layout>

</appender>

<logger name='MyLog'>

<level value='Error'/> //Log级别

<appender-ref ref='LogFileAppender'/>

</logger>

</log4net>

下面对对其中的layout节点下的参数做简要说明,如下表:

表示式

含义

date

发生日志事件的本地时间。 使用 DE>%utcdate 输出UTC时间。date后面还可以跟一个日期格式,用大括号括起来。DE>例如:%date{HH:mm:ss,fff}或者%date{dd MMM yyyy HH:mm:ss,fff}。如果date后面什么也不跟,将使用ISO8601 格式 。

日期格式和.NetDateTime类的ToString方法中使用的格式是一样。

另外log4net还有3个自己的格式Formatter。 它们是 "ABSOLUTE", "DATE""ISO8601"分别代表 AbsoluteTimeDateFormatter, DateTimeDateFormatterIso8601DateFormatter。例如: %date{ISO8601}%date{ABSOLUTE}

它们的性能要好于ToString

 

location

引发日志事件的方法(包括命名空间和类名),以及所在的源文件和行号。

警告:会影响性能。没有pdb文件的话,只有方法名,没有源文件名和行号。

 

level

日志事件等级

line

引发日志事件的行号

警告:会影响性能。

 

message

由应用程序提供给日志事件的消息。

 

newline

换行符

 

thread

引发日志事件的线程,如果没有线程名就使用线程号。

 

method

发生日志请求的方法名(只有方法名而已)。

警告:会影响性能。


下面给出一个控制台代码的例子:

using log4net;

class
Program
{
static void Main(string[] args)
{
string str = @"<?xml version='1.0' encoding='utf-8' ?>"
+ @"<log4net>"
+ @" <appender name='LogFileAppender' type='log4net.Appender.RollingFileAppender' >"
+ @" <param name='File' value='d:\统计\Applog.txt'/>"
+ @" <param name='AppendToFile' value='true'/>"
+ @" <param name='datePattern' value='yyyy_MM_dd.lo\g' />"
+ @" <param name='StaticLogFileName' value='false'/>"
//是否及时写入,这样可以提高速度
+ @" <param name='ImmediateFlush' value='true'/>" //默认是true
+ @" <param name='MaxSizeRollBackups' value='-1'/>"
+ @" <param name='MaximumFileSize' value='5MB'/>" //文件大小
+ @" <param name='RollingStyle' value='size'/>" //分类的类型
+ @" <layout type='log4net.Layout.PatternLayout'>"
+ @" <param name='ConversionPattern' value='[%date{HH:mm:ss,fff}][%5.5level][%method][%line]: %message %newline'/>"
+ @" </layout>"
+ @" </appender>"
+ @" <logger name='MyLog'>"
+ @" <level value='Error'/>" //Log级别
+ @" <appender-ref ref='LogFileAppender'/>"
+ @" </logger>"
+ @"</log4net>";

XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(str);

log4net.Config.XmlConfigurator.Configure(xmldoc.DocumentElement);

log4net.ILog log = log4net.LogManager.GetLogger("MyLog");

log.Debug("记录日志");
log.Error("记录日志");//错误
log.Warn("记录日志");//警告
log.Info("记录日志");
log.Fatal("记录日志");

}
}


我们要注意它输出的样式是这样的:

[%date{HH:mm:ss,fff}][%5.5level][%method][%line]: %message %newline
并且日志的级别为ERROR所以只能显示ERROR和FATAL级别的日志信息。如下图:

原文地址:https://www.cnblogs.com/Johnny_Z/p/2199185.html