Log4Net日志管理(摘自网上)
Log4Net日志管理
A. Log4Net日志管理
Log4Net的日志级别如下:l
级别 允许的方法 Boolean属性 优先级别
OFF Highest
FATAL void Fatal(...); bool IsFatalEnabled;
RROR void Error(...); bool IsErrorEnabled;
WARN void Warn(...); bool IsWarnEnabled;
INFO void Info(...); bool IsInfoEnabled;
DEBUG void Debug(...); bool IsDebugEnabled;
ALL Lowest
Log4Net的日志管理提供了多种输出介质如日志文件、数据库、控制台等,下面我们着重介绍以下几种常用的介质及其使用方法:
1、 输出介质为日志文件
a) 配置文件中的配置
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<root>
<!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于 此处设置的级别则日志不作记录-->
<level value="ALL" />
<!--定义了日志输出的介质的类型,可定义多种输出介质-->
<appender-ref ref="LogFileAppender" />
</root>
<!--输出至指定的日志文件-->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<!--该配置项参数指明了日志文件存放的地方-->
<param name="File" value="d:\log\Client.log" />
<!--该配置项参数指明是否在原文件中添加日志信息-->
<param name="AppendToFile" value="true" />
<!--该配置项参数指明输出信息的布局或格式-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
</log4net>
b) 应用程序中的调用
log4net.ILog log = log4net.LogManager.GetLogger("aaa");
//写Error级别的日志信息
log.Error("输出Error级别的日志信息")
//写Info级别的日志信息
log.Info("输出Info级别的日志信息");
2、 输出介质为数据库
a) 配置文件中的配置
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<root>
<!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于 此处设置的级别则日志不作记录-->
<level value="ALL" />
<!--定义了日志输出的介质的类型,可定义多种输出介质-->
<appender-ref ref="AdoNetAppender" />
</root>
<!--输出至数据库(Sql Server)。。。测试数据库用Northwind-->
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<!--设置缓存中能存放的日志信息个数-->
<bufferSize value="2" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="server=(local);database=Northwind;integrated security=false;persist security info=True;UID=sa;PWD=" />
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<!--传入数据库的相对应字段的参数值-->
<parameter>
<!--传入的参数名-->
<parameterName value="@log_date" />
<!--传入参数的类型-->
<dbType value="DateTime" />
<!--传入参数的布局或格式-->
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
</log4net>
b) 应用程序中的调用
log4net.ILog log = log4net.LogManager.GetLogger("aaa");
//写Error级别的日志信息
log.Error("输出Error级别的日志信息")
//写Info级别的日志信息
log.Info("输出Info级别的日志信息");
3、 输出介质为控制台
a) 配置文件中的配置
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<root>
<!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于 此处设置的级别则日志不作记录-->
<level value="ALL" />
<!--定义了日志输出的介质的类型,可定义多种输出介质-->
<appender-ref ref="ConsoleAppender" />
</root>
<!--输出至控制台-->
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<!--该配置项参数指明输出信息的布局或格式-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
</log4net>
b) 应用程序中的调用
log4net.ILog log = log4net.LogManager.GetLogger("aaa");
//写Error级别的日志信息
log.Error("输出Error级别的日志信息")
//写Info级别的日志信息
log.Info("输出Info级别的日志信息");
4、 输出介质为本地机器的应用程序事件日志
a) 配置文件中的配置
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<root>
<!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于 此处设置的级别则日志不作记录-->
<level value="ALL" />
<!--定义了日志输出的介质的类型,可定义多种输出介质-->
<appender-ref ref="EventLogAppender" />
</root>
<!--输出至Event Log服务-->
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<!--该配置项参数指明输出信息的布局或格式-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
</log4net>
b) 应用程序中的调用
log4net.ILog log = log4net.LogManager.GetLogger("aaa");
//写Error级别的日志信息
log.Error("输出Error级别的日志信息")
//写Info级别的日志信息
log.Info("输出Info级别的日志信息");
5、 其他
其他的输出介质这里就不再介绍了,如有需要可参照相关资料
在使用Log4Net的日志的时候有几点需要注意:
如果在配置文件中的<root>节点下的配置了多个输出介质即有多个
<appender-ref ref="***" />,那么你所配置的多个输出介质的都将记入相应日志信息
由于我们在应用系统的开发中,某些日志要求达到Error或其他级别时才被记录,介于这种要求,我们需要自己定义一个级别,如下(在配置文件的<root>下加入):
<!--定义个别日志写入的级别-->
<logger name="main">
<level value="Error"></level>
</logger>
调用:
//指定配置的Logger的名称
log4net.ILog log = log4net.LogManager.GetLogger("main");
//写Error级别的日志信息
log.Error("输出Error级别的日志信息")
//写Info级别的日志信息
log.Info("输出Info级别的日志信息");
A. Log4Net日志管理
Log4Net的日志级别如下:l
级别 允许的方法 Boolean属性 优先级别
OFF Highest
FATAL void Fatal(...); bool IsFatalEnabled;
RROR void Error(...); bool IsErrorEnabled;
WARN void Warn(...); bool IsWarnEnabled;
INFO void Info(...); bool IsInfoEnabled;
DEBUG void Debug(...); bool IsDebugEnabled;
ALL Lowest
Log4Net的日志管理提供了多种输出介质如日志文件、数据库、控制台等,下面我们着重介绍以下几种常用的介质及其使用方法:
1、 输出介质为日志文件
a) 配置文件中的配置
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<root>
<!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于 此处设置的级别则日志不作记录-->
<level value="ALL" />
<!--定义了日志输出的介质的类型,可定义多种输出介质-->
<appender-ref ref="LogFileAppender" />
</root>
<!--输出至指定的日志文件-->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<!--该配置项参数指明了日志文件存放的地方-->
<param name="File" value="d:\log\Client.log" />
<!--该配置项参数指明是否在原文件中添加日志信息-->
<param name="AppendToFile" value="true" />
<!--该配置项参数指明输出信息的布局或格式-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
</log4net>
b) 应用程序中的调用
log4net.ILog log = log4net.LogManager.GetLogger("aaa");
//写Error级别的日志信息
log.Error("输出Error级别的日志信息")
//写Info级别的日志信息
log.Info("输出Info级别的日志信息");
2、 输出介质为数据库
a) 配置文件中的配置
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<root>
<!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于 此处设置的级别则日志不作记录-->
<level value="ALL" />
<!--定义了日志输出的介质的类型,可定义多种输出介质-->
<appender-ref ref="AdoNetAppender" />
</root>
<!--输出至数据库(Sql Server)。。。测试数据库用Northwind-->
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<!--设置缓存中能存放的日志信息个数-->
<bufferSize value="2" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="server=(local);database=Northwind;integrated security=false;persist security info=True;UID=sa;PWD=" />
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<!--传入数据库的相对应字段的参数值-->
<parameter>
<!--传入的参数名-->
<parameterName value="@log_date" />
<!--传入参数的类型-->
<dbType value="DateTime" />
<!--传入参数的布局或格式-->
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
</log4net>
b) 应用程序中的调用
log4net.ILog log = log4net.LogManager.GetLogger("aaa");
//写Error级别的日志信息
log.Error("输出Error级别的日志信息")
//写Info级别的日志信息
log.Info("输出Info级别的日志信息");
3、 输出介质为控制台
a) 配置文件中的配置
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<root>
<!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于 此处设置的级别则日志不作记录-->
<level value="ALL" />
<!--定义了日志输出的介质的类型,可定义多种输出介质-->
<appender-ref ref="ConsoleAppender" />
</root>
<!--输出至控制台-->
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<!--该配置项参数指明输出信息的布局或格式-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
</log4net>
b) 应用程序中的调用
log4net.ILog log = log4net.LogManager.GetLogger("aaa");
//写Error级别的日志信息
log.Error("输出Error级别的日志信息")
//写Info级别的日志信息
log.Info("输出Info级别的日志信息");
4、 输出介质为本地机器的应用程序事件日志
a) 配置文件中的配置
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<root>
<!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于 此处设置的级别则日志不作记录-->
<level value="ALL" />
<!--定义了日志输出的介质的类型,可定义多种输出介质-->
<appender-ref ref="EventLogAppender" />
</root>
<!--输出至Event Log服务-->
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<!--该配置项参数指明输出信息的布局或格式-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
</log4net>
b) 应用程序中的调用
log4net.ILog log = log4net.LogManager.GetLogger("aaa");
//写Error级别的日志信息
log.Error("输出Error级别的日志信息")
//写Info级别的日志信息
log.Info("输出Info级别的日志信息");
5、 其他
其他的输出介质这里就不再介绍了,如有需要可参照相关资料
在使用Log4Net的日志的时候有几点需要注意:
如果在配置文件中的<root>节点下的配置了多个输出介质即有多个
<appender-ref ref="***" />,那么你所配置的多个输出介质的都将记入相应日志信息
由于我们在应用系统的开发中,某些日志要求达到Error或其他级别时才被记录,介于这种要求,我们需要自己定义一个级别,如下(在配置文件的<root>下加入):
<!--定义个别日志写入的级别-->
<logger name="main">
<level value="Error"></level>
</logger>
调用:
//指定配置的Logger的名称
log4net.ILog log = log4net.LogManager.GetLogger("main");
//写Error级别的日志信息
log.Error("输出Error级别的日志信息")
//写Info级别的日志信息
log.Info("输出Info级别的日志信息");