log4net的配置之appender

it2022-05-09  33

由于log4net默认情况下会独占日志文件,该文件不能被File.Open。可以通过增加配置:<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />来使用最小锁定模型(minimal locking model),以允许多个进程可以写入同一个文件。各种appender说明:

在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 ="
转载请注明原文地址: https://win8.8miu.com/read-1486299.html

最新回复(0)