liwei6797

 

log4net使用SqlExpress

1. 下载log4net.dll并引入到项目References中.
2. 需要修改global.asax 配置application对象启动的时候加载log4net配置. 这一步是不可以缺少的.
protected void Application_Start(Object sender, EventArgs e)
{
   log4net.Config.DOMConfigurator.Configure();
}
3. 可以看到上面的代码没有参数. 可见是载入了缺省配置. 该配置必须设置于web.config中.
在web.cofig根节点 configuration 中加入如下section:
<configSections>
  
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
4.该 config section 声明了名为 log4net 的另外一个config section. 后者必须位于web.config根节点 configuration 下: 以下是一个sample:
<log4net debug="false">
    
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
        
<param name="File" value="XxxxApplication.log.txt" />
        
<param name="datePattern" value="MM-dd HH:mm" />
        
<param name="AppendToFile" value="true" />
        
<layout type="log4net.Layout.PatternLayout">
            
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
        
</layout>
    
</appender>
    
<appender name="HttpTraceAppender" type="log4net.Appender.ASPNetTraceAppender" >
        
<layout type="log4net.Layout.PatternLayout">
            
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
        
</layout>
    
</appender>
    
<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>
    
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
        
<param name="File" value="_LogData\Log.txt" />
        
<param name="AppendToFile" value="true" />
        
<param name="MaxSizeRollBackups" value="10" />
        
<param name="MaximumFileSize" value="5MB" />
        
<param name="RollingStyle" value="Size" />
        
<param name="StaticLogFileName" value="true" />
        
<layout type="log4net.Layout.PatternLayout">
            
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
        
</layout>
    
</appender>
    
<root>
        
<level value="DEBUG" />
        
<appender-ref ref="LogFileAppender" />
    
</root>
</log4net>

5. 以上定义了多个appender. 简单来说, 每一个 appender 都是一种输出介质.
下面是使用SQLExpress的配置:
<log4net debug="false">
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
   <bufferSize value="10"/>
   <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.50727.42, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
   <connectionString value="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"/>
   <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>
  <root>
   <level value="DEBUG"/>
   <appender-ref ref="AdoNetAppender"/>
  </root>
</log4net>
数据库定义如下:
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
)
关于PublicKeyToken的取得方法:
vs2005 控制台中使用 sn -T C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll

6. root节点指定了选用的 appender. 本例选用了AdoNetAppender. 
7. 到目前位置就配置好了log4net. 可以在我们的应用中直接使用了.
8. 以下说明应用方法:
要输出日志, 必须首先得到带有一个别名的logger.
使用以下命令

log4net.ILog logger = log4net.LogManager.GetLogger(this.GetType());
(可以直接使用GetType得到当前类名)
之后调用
logger.Info(string message);
logger.Error(string message);
logger.Debug(string message);
即可输出日志.

posted on 2007-04-28 12:12  对倒二五条  阅读(455)  评论(1编辑  收藏  举报

导航