在log4net的配置中,appender是最重要的部分,一般来说,每一种appender都表示一种日志的输出介质,如日志文件、EvengLog、数据库、控制台、邮件、ASP.NET页面等。
本文对各种内置的appender的配置提供了示例,但却远称不上详尽。要想了解每一种appender的参数和选项的说明,请参看该appender的SDK文档。
以下示例都是.NET 2.0下进行的, log4net的版本为1.2.10。 AdoNetAppender详情参考 log4net.Appender. AdoNetAppender SDK文档。
AdoNetAppender的相关配置内容取决于目标数据库的provider。下面仅提供SQL Server 2000的例子。
首先建立数据表:
CREATE TABLE [ dbo ] . [ Log ] ( [ Id ] [ int ] IDENTITY ( 1 , 1 ) NOT NULL , [ Date ] [ datetime ] NOT NULL , [ Thread ] [ varchar ] ( 255 ) NOT NULL , [ Level ] [ varchar ] ( 50 ) NOT NULL , [ Logger ] [ varchar ] ( 255 ) NOT NULL , [ Message ] [ varchar ] ( 4000 ) NOT NULL , [ Exception ] [ varchar ] ( 2000 ) NULL ) 然后添加配置:
< 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=TestBase;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 > bufferSize 表示批处理的日志事件,可以避免每次日志事件都访问数据库; ConnectionType 指定了要使用的IDbConnection的完全限定类型名称; connectionString 表示连接字符串; CommandText 是SQL语句或存储过程;最后一组 parameter 节点描述了SQL语句或存储过程需要的参数。
AspNetTraceAppender
详情参考 log4net.Appender.AspNetTraceAppender SDK 文档 。< appender name ="AspNetTraceAppender" type ="log4net.Appender.AspNetTraceAppender" > < layout type ="log4net.Layout.PatternLayout" > < conversionPattern value ="