阿宽

Nothing is more powerful than habit!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Log4Net 1.2.0 记录在MSSql数据库 用法

Posted on 2011-07-09 21:33  宽田  阅读(1147)  评论(1编辑  收藏  举报

使用一、简单用法。

1、下载Log4net,官网地址:http://logging.apache.org/log4net/

2、在项目中引用Log4Net.Dll

3、在Web.Config中增加下边字体加粗部分的配置。

<configuration>
  
<configSections>
    
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      ……
    
</sectionGroup>
    
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
  
</configSections>

  
<log4net>
    
<appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
      
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      
<connectionString value="data source=;initial catalog=YqSystem;integrated security=false;persist security info=True;User ID=sa;Password=123"/>
      
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)"/>
      
<parameter>
        
<parameterName value="@log_date"/>
        
<dbType value="DateTime"/>
        
<layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}"/>
      
</parameter>
      
<parameter>
        
<parameterName value="@thread"/>
        
<dbType value="String"/>
        
<size value="255"/>
        
<layout type="log4net.Layout.PatternLayout" value="%thread"/>
      
</parameter>
      
<parameter>
        
<parameterName value="@log_level"/>
        
<dbType value="String"/>
        
<size value="50"/>
        
<layout type="log4net.Layout.PatternLayout" value="%level"/>
      
</parameter>
      
<parameter>
        
<parameterName value="@logger"/>
        
<dbType value="String"/>
        
<size value="255"/>
        
<layout type="log4net.Layout.PatternLayout" value="%logger"/>
      
</parameter>
      
<parameter>
        
<parameterName value="@message"/>
        
<dbType value="String"/>
        
<size value="4000"/>
        
<layout type="log4net.Layout.PatternLayout" value="%message"/>
      
</parameter>
    
</appender>
    
<root>
      
<appender-ref ref="AdoNetAppender_SqlServer" />
    
</root>
  
</log4net>
  
<appSettings/>

 4、在Global.asax的Application_Start事件中增加配置。

     protected void Application_Start(object sender, EventArgs e)
        {
        log4net.Config.XmlConfigurator.Configure();          
        }

    也可以在项目AssemblyInfo.cs中添加下边语句来替换:

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

 

5、使用,请看下边加粗的部分。

        log4net.ILog myLogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        
protected void Page_Load(object sender, EventArgs e)
        {
            
try
            {
                
throw new Exception("Eric Test Message!");
            }
            
catch (Exception ex)
            {
                myLogger.Error(
"测试"new Exception("在这里发生了一个异常"));
            }
        }

 

使用二、将Log4Net配置放在独立文件中

 1、2步不变。从第3步变更如下。

3、在项目中添加配置文件log4net.config,配置文件中的内容如下:

<?xml version="1.0" encoding="utf-8"?>

<configuration>
  
<configSections>
    
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
  
</configSections>
  
<log4net>
    
<appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
      
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      
<connectionString value="data source=;initial catalog=YqSystem;integrated security=false;persist security info=True;User ID=sa;Password=123"/>
      
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)"/>
      
<parameter>
        
<parameterName value="@log_date"/>
        
<dbType value="DateTime"/>
        
<layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}"/>
      
</parameter>
      
<parameter>
        
<parameterName value="@thread"/>
        
<dbType value="String"/>
        
<size value="255"/>
        
<layout type="log4net.Layout.PatternLayout" value="%thread"/>
      
</parameter>
      
<parameter>
        
<parameterName value="@log_level"/>
        
<dbType value="String"/>
        
<size value="50"/>
        
<layout type="log4net.Layout.PatternLayout" value="%level"/>
      
</parameter>
      
<parameter>
        
<parameterName value="@logger"/>
        
<dbType value="String"/>
        
<size value="255"/>
        
<layout type="log4net.Layout.PatternLayout" value="%logger"/>
      
</parameter>
      
<parameter>
        
<parameterName value="@message"/>
        
<dbType value="String"/>
        
<size value="4000"/>
        
<layout type="log4net.Layout.PatternLayout" value="%message"/>
      
</parameter>
    
</appender>
    
<root>
      
<appender-ref ref="AdoNetAppender_SqlServer" />
    
</root>
  
</log4net>

</configuration>

4、在项目AssemblyInfo.cs中添加下边语句

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

5、使用与上边的使用相同。代码如下:

        log4net.ILog myLogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        
protected void Page_Load(object sender, EventArgs e)
        {
            
try
            {
                
throw new Exception("Eric Test Message!");
            }
            
catch (Exception ex)
            {
                myLogger.Error(
"测试"new Exception("在这里发生了一个异常"));
            }
        }