log4net配置(四個不同方式案例)

來源:互聯網
上載者:User

標籤:blog   http   io   ar   使用   sp   for   strong   on   

Technorati 標籤: log4net配置,獨立log4net.config,非嵌入式

成功例子一:

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] &lt;%X{auth}&gt;%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] &lt;%X{auth}&gt;%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] &lt;%X{auth}&gt;%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]

log4net配置(四個不同方式案例)(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.