在asp.net下将log4net配置成可log到ms sql

 

在asp.net下将log4net配置成可log到ms sql

在asp.net下将log4net配置成可log到ms sql

http://logging.apache.org/,可下载log4net,最新为1.2版本,
建立一个asp.net web 项目,并将log4net.dll添加到引用

1:建立数据表
 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
)


2:编写配置文件
<configuration>
 <configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
 </configSections>

 <system.web>
    <!--
  ......
         -->
 </system.web>

 <log4net>

  <root>
   <level value="ALL" />
   <appender-ref ref="ADONetAppender" />
  </root>

  <!--
  <logger name="testApp.Logging">
   <level value="ALL"/>
   <appender-ref ref="ADONetAppender" />
   
  </logger>
  -->

  <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
   <bufferSize value="10" />
   <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   <connectionString value="server=localhost;database=demo;user id=sa;password=123456" />
   <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>

 </log4net>
 
</configuration>

特别说明<bufferSize value="10" />,这是log信息记录的缓冲大小,(比如只有log信息记录达到10,
才会将log信息记录写入数据库)

3:在Global.asax.cs中
  protected void Application_Start(Object sender, EventArgs e)
  {
   //读取配置信息
    log4net.Config.DOMConfigurator.Configure();
  }
4:一个使用log的demo类
 using System;

 namespace Log
 {
  /// <summary>
  /// MyLog 的摘要说明。
  /// </summary>
  public class MyLog
  {
   private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(MyLog));
   public static void LogInfo()
   {   
    log.Info("log日志");   
   }

   public static void LogError()
   {   
    log.Info("log错误");   
   }
  }
 }
5:资源:
主站 http://logging.apache.org/
学习使用log4net的文章 http://www.ondotnet.com/pub/a/dotnet/2003/06/16/log4net.html

posted on 2004年05月26日 11:54 AM

Feedback

# 回复:在asp.net下将log4net配置成可log到ms sql 2004-06-21 1:28 PM Jay

你好:
按照您的指导我已成功配置写入到文本文件的log.
但不知可否不使用web.config进行缺省DOM配置的方法. 我曾经试过将xml 配置文件放置位根目录下和bin目录下, 均未看到预期的结果. 我想知道使用独立xml配置文件进行配置的方法和步骤. 谢谢.

Title
Name
Url
Comments 
posted @ 2004-07-02 09:18  Alvin  阅读(543)  评论(0)    收藏  举报