log4net1.2.10 在asp.net 2.0当中的使用:写入文件或者数据库

本文示例代码下载:https://files.cnblogs.com/lxinxuan/Log4Net_Test.rar

参考了 http://blog.csdn.net/woowindice/archive/2007/03/24/1540122.aspx
同时参考:http://www.cnblogs.com/dragonsuc/archive/2006/06/21/431888.aspx
这个介绍更全面些。

使用步骤:
1。下载log4net1.2.10 ,下载地址http://cvs.apache.org/dist/incubator/log4net/1.2.10/incubating-log4net-1.2.10.zip
2。添加log4net的引用到您的asp.net 2.0项目
3。asp.net2.0好象默认没有Global.asax文件了,所以要自己加一个。点项目右键来添加。
4。在Global.asax文件的Application_Start方法里增加代码:log4net.Config.XmlConfigurator.Configure();
5。在web.config文件里,编辑Configuration->Configsections 增加如下区域:
<section  name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
然后增加log4net区域如下:
  <log4net>
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="c:\\Log4Net.log"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
      </layout>
    </appender>
    <logger name="File">
      <level value="Debug" />
      <appender-ref ref="LogFileAppender" />
    </logger>
  </log4net>

整个web.config文件例如:

<?xml version="1.0"?>
<!-- 
    注意: 除了手动编辑此文件以外,您还可以使用 
    Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
     “网站”
->“Asp.Net 配置”选项。
    设置和注释的完整列表在 
    machine.config.comments 中,该文件通常位于 
    WindowsMicrosoft.NetFrameworkv2.xConfig 中
-->
<configuration>
  
<configSections>
    
<section  name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

  
</configSections>
  
  
<appSettings>
    
<add key="mt_url" value="http://61.175.132.123/mt?iscorpsend=false&amp;spid=%spid%&amp;mobileid=%mobileid%&amp;content=%content%"/>
    
<add key="net.bzbs.www.BssoftWebAPI" value="http://www.bzbs.net/bswebapi/BssoftWebAPI.asmx"/>
  
</appSettings>
  
<connectionStrings/>
  
<system.web>
    
<!-- 
            设置 compilation debug
="true" 将调试符号插入
            已编译的页面中。但由于这会 
            影响性能,因此只在开发过程中将此值 
            设置为 
true
        
-->
    
<compilation debug="true"/>
    
<!--
            通过 
<authentication> 节可以配置 ASP.NET 使用的 
            安全身份验证模式,
            以标识传入的用户。 
        
-->
    
<authentication mode="Windows"/>
    
<!--
            如果在执行请求的过程中出现未处理的错误,
            则通过 
<customErrors> 节可以配置相应的处理步骤。具体说来,
            开发人员通过该节可以配置
            要显示的 html 错误页
            以代替错误堆栈跟踪。

        
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            
<error statusCode="403" redirect="NoAccess.htm" />
            
<error statusCode="404" redirect="FileNotFound.htm" />             
            
-->
    
<customErrors mode="Off" />

    
</system.web>
  
<log4net>

    
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      
<param name="File" value="c:\Log4Net.log"/>
      
<layout type="log4net.Layout.PatternLayout">
        
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
      
</layout>
    
</appender>
    
<logger name="File">
      
<level value="Debug" />
      
<appender-ref ref="LogFileAppender" />
    
</logger>

  
</log4net>


</configuration>

 配置完毕!下面就可以使用log4net了,就跟java里的log4j一样
比如在Default.aspx.cs里添加代码:
log4net.ILog logger = log4net.LogManager.GetLogger("File");
 logger.Info(“测试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
)
并且
需要如下配置:

<!--以下是写入数据库-->
  
<log4net debug="false">
    
<root>
      
<level value="ALL" />
      
<appender-ref ref="ADONetAppender" />
    
</root>
    
<!--
     定义loger的名称和使用的appender
    
-->
    
<logger name="AA">
      
<level value="ALL"/>
      
<appender-ref ref="ADONetAppender" />
    
</logger>
    
<appender name="ADONetAppender" type="log4net.Appender.AdoNetAppender">
      
<!--
      定义几条存入数据库 有2条时才写入数据库,没有两条叫缓存
      
-->
      
<bufferSize value="2" />
      
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      
<connectionString value="database=Log;server=(local);User ID=log;Password=log" />
      
<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>
调用代码:
log4net.ILog log = log4net.LogManager.GetLogger("AA");           //log.Logger.Name

log.Debug(
"这是我在使用Log4Net");

当我测试的时候,发现一个意外情况,就是 <bufferSize value="2" />这里,把2换成其他数字,仍然不起作用,每次依然是插入两条记录,不知道怎么回事...
posted @ 2007-04-01 13:30  Kevin Lin  阅读(1363)  评论(5编辑  收藏  举报