log4net配置(四个不同方式案例)
成功例子一:
vs2003建立的asp.net项目,log4net文件放在web.config文件中
1。添加log4net.dll的引用(下载dll)
2。web.config中添加(注意放对位置,在<configuration> 标签下)
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0" />
</configSections>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<param name="File" value="log-file.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}>%n - %m%n" />
</layout>
</appender>
</log4net>
3。WebForm1.aspx.cs中page_Load中
log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);logger .Debug("hello");
4。在应用程序代码中读取配置
正确a: 该web项目中的AssemblyInfo.cs文件中添加(注意放对位置,放在命名空间外)
[assembly:log4net.Config.DOMConfigurator( ConfigFile="Web.config",Watch=true)]
正确b: 或则Global.asax.cs中添加(位置也是在命名空间外)
[assembly:log4net.Config.DOMConfigurator( ConfigFile="Web.config",Watch=true)]
正确c: 或则直接在要记录日志的页面文件WebForm1.aspx.cs里写
[assembly:log4net.Config.DOMConfigurator( ConfigFile="Web.config",Watch=true)]
正确d: 可以在Global.asax中Application_Start里用代码实现,但是如果是 独立log4net.config文件,就不可以了
即:log4net.Config.XmlConfigurator.Configure();
5。 web项目的WebForm1.aspx.cs Page_Load中
log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
logger .Debug("hello");
成功例子二:
vs2005建立的asp.net项目,log4net文件放在web.config文件中
1。同vs2003一样,添加log4net.dll的引用(下载dll)
2。同vs2003一样,web.config中添加(注意放对位置,在<configuration> 标签下)
3。同vs2003一样
4。在应用程序代码中读取配置(这里vs2005没有AssemblyInfo.cs 文件,
可以在Global.asax中Application_Start里用代码实现,即:log4net.Config.XmlConfigurator.Configure();
或则直接在要记录日志的页面文件WebForm1.aspx.cs里写
[assembly:log4net.Config.DOMConfigurator( ConfigFile="Web.config",Watch=true)]
5。 web项目的WebForm1.aspx.cs Page_Load中
log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);logger .Debug("hello");
成功例子三:
vs2005建立的asp.net项目,log4net文件放在单独的配置文件中 log4net.config
1。同上(添加引用)
2。在web项目的web.config中添加(位置还是在<configuration> 标签下)
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"/>
</configSections>
3。建立单独的log4net.config配置文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0" />
</configSections>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<param name="File" value="log-file.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}>%n - %m%n" />
</layout>
</appender>
</log4net>
</configuration>
4。在应用程序代码中读取配置(道理同上,只有1种正确方法,但是这里Web.Config改成了log4net.config)
正确: 直接在要记录日志的页面文件WebForm1.aspx.cs里写(注意放对位置,放在命名空间外)
[assembly:log4net.Config.DOMConfigurator( ConfigFile="log4net.config",Watch=true)]
5。 web项目的WebForm1.aspx.cs Page_Load中
log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
logger .Debug("hello");
成功例子四:
vs2005建立的asp.net项目,log4net文件放在单独的文件中log4net.config,外加,把日志记录放在单独的一个公共项目中,因为往往项目会设计一个公共层,实现日志记录,缓存管理,加密,安全,等等。
1、添加一个公共类库ClassLib项目,在Properties下的AssemblyInfo.cs文件中最后加入:
即 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
2。同上(添加引用)这时是在公共类库ClassLib项目里添加就ok了,
3。建立单独的log4net.config配置文件(最好放在web项目中,方便以后修改)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0" />
</configSections>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<param name="File" value="log-file.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}>%n - %m%n" />
</layout>
</appender>
</log4net>
</configuration>
4。在Global.asax代码中Application_Start(object sender, EventArgs e) 加入:
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(Server.MapPath("~") + @"\log4net.config"));
5.在公共类库ClassLib项目添加日志类:MyLog.cs
using System;
using System.Collections.Generic;
using System.Text;
using log4net;
namespace ClassLib
{
public class MyLog
{
public static void test()
{
log4net.ILog log = log4net.LogManager.GetLogger("MyLogger");
log.Debug("hello");
}
}}
6。在web项目的webFom1.aspx.cs中Page_Load中
ClassLib.MyLog.test();
ok.搞定
日志到数据库的log4net.config 配置如下:
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net debug="false">
<root>
<level value="ALL" />
<appender-ref ref="ADONetAppender" />
<!-- <appender-ref ref="rootFile" /> -->
</root>
<!-- 定义loger的名称和使用的appender -->
<logger name="*">
<level value="ALL"/>
<appender-ref ref="ADONetAppender" />
<!--<appender-ref ref="rollingFile" />-->
</logger>
<appender name="ADONetAppender" type="log4net.Appender.AdoNetAppender">
<!-- 定义几条存入数据库 有2条时才写入数据库,没有两条叫缓存 -->
<bufferSize value="0" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="database=数据库名;server=(local);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>
数据库结构如下:
CREATE TABLE [dbo].[Log](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Date] [datetime] NOT NULL,
[Thread] [varchar](255) COLLATE Chinese_PRC_CI_AS NOT NULL,
[Level] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[Logger] [varchar](255) COLLATE Chinese_PRC_CI_AS NOT NULL,
[Message] [varchar](4000) COLLATE Chinese_PRC_CI_AS NOT NULL,
[Exception] [varchar](2000) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
posted on 2010-11-18 19:16 黄兆张's Blog 阅读(6674) 评论(1) 编辑 收藏 举报