详情参考
log4net.Appender. AdoNetAppender SDK文档
。
然后添加配置:
bufferSize 表示批处理的日志事件,可以避免每次日志事件都访问数据库; ConnectionType 指定了要使用的IDbConnection的完全限定类型名称; connectionString 表示连接字符串; CommandText 是SQL语句或存储过程;最后一组 parameter 节点描述了SQL语句或存储过程需要的参数。
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
)
(
[ 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 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语句或存储过程需要的参数。