Log4Net

本人测试源码下载地址:http://files.cnblogs.com/chenghu/Log4Net_Test.rar 

一 、保存到文件的方法

1,添加log4net.dll的引用。

2,替换一下配置文件。(本配置文件为测试使用 实际开发会有更多节点)

<?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="Loglog-file.txt" />         //日志文件保存的地方
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern"  value="记录时间:%d     线程 ID:[%t]    日志级别:%-5p     出错类:%logger property:[%property{NDC}]     错误描述:%m%n" />
      </layout>
    </appender>
  </log4net>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>

</configuration>
Web.config Code

3,在该web项目中的AssemblyInfo.cs文件的最后一行中添加以下代码:

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

4,web项目的Default.aspx.cs的Page_Load中添加

       protected void Page_Load(object sender, EventArgs e)
        {
            log4net.ILog log = log4net.LogManager.GetLogger("MyLogger");
            log.Debug("hello");
        }
Default.aspx Code

参看来源:http://database.ctocio.com.cn/analysis/85/8992585_3.shtml

二、保存到数据库的方法

log4net是一个优秀的开源日志项目,现将本人使用写成一个demo,如下

1,添加log4net.dll的引用。

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

3:编写配置文件

<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> 
Web.Config Code

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

4:在Global.asax.cs中
protected void Application_Start(Object sender, EventArgs e)
{
//读取配置信息
log4net.Config.DOMConfigurator.Configure();
}


5:在web项目的Default.aspx.cs文件里的Page_Load中添加

protected void Page_Load(object sender, EventArgs e)
        {
            log4net.ILog log
= log4net.LogManager.GetLogger("MyLogger");
            log.Debug(
"hello"); 
            log.Info("log日志");
        }

原文地址:https://www.cnblogs.com/chenghu/p/3663107.html