log4net1.2.10 在asp.net 2.0当中的使用:写入文件或者数据库
参考了 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文件例如:
<!--
注意: 除了手动编辑此文件以外,您还可以使用
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&spid=%spid%&mobileid=%mobileid%&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>
log.Debug("这是我在使用Log4Net");
当我测试的时候,发现一个意外情况,就是 <bufferSize value="2" />这里,把2换成其他数字,仍然不起作用,每次依然是插入两条记录,不知道怎么回事...