log4net配置(web中使用log4net,把web.config放在單獨的文件中)

來源:http://hi.baidu.com/cyap/blog/item/814ea2010993fc0a7aec2c3c.html

 

看了網上很多例子,還是不行,花了一個下午的時間,終於成功了,看來自己解決,理解纔是最深的,得到幫助的朋友鼓勵一下啊,謝謝

以下有幾個要注意的地方(這很有可能就是寫不出日誌的關鍵所在)

成功例子一:

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 log = log4net.LogManager.GetLogger("MyLogger");
    log.Debug("hello");

4。在應用程序代碼中讀取配置(方法有3種,錯誤的也有一中,注意了

正確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)]

錯誤:   注意了:這裏,網上很多都說第4步可以在Global.asax中Application_Start裏用代碼實現,

錯誤:***************************

即:log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("Web.Config"));

錯誤:***************************

但是我試過了,不行,不知道大家行不行,如果可以,麻煩請告訴我,感激不盡

5。 web項目的WebForm1.aspx.cs Page_Load中

log4net.ILog log = log4net.LogManager.GetLogger("MyLogger");
            log.Debug("hello");

成功例子二:

vs2005建立的asp.net項目,log4net文件放在web.config文件中

1。同vs2003一樣

2。同vs2003一樣

3。同vs2003一樣

4。在應用程序代碼中讀取配置(這裏vs2005沒有AssemblyInfo.cs 文件,所以相比vs2003少了一種方法,又Global.asax前臺頁面和後臺頁面在同一文件中,如果在Global.asax任何位置設置都出錯, [assembly:log4net.Config.DOMConfigurator( ConfigFile="Web.config",Watch=true)] ,就只有1種方法了,正確C

5。 web項目的WebForm1.aspx.cs Page_Load中

log4net.ILog log = log4net.LogManager.GetLogger("MyLogger");
            log.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

正確c:   或則直接在要記錄日誌的頁面文件WebForm1.aspx.cs裏寫

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

這裏想一下,一個項目肯定會在很多頁面中都要記錄日誌,所以在每個頁面文件裏都要寫這個及其不方便,也不可能,所以我們改用下一中方案,一般我們的項目也會這麼設計

5。 web項目的WebForm1.aspx.cs Page_Load中

log4net.ILog log = log4net.LogManager.GetLogger("MyLogger");
            log.Debug("hello");

成功例子四:

vs2005建立的asp.net項目,log4net文件放在單獨的文件中log4net.config,外加,把日誌記錄放在單獨的一個公共項目中,因爲往往項目會設計一個公共層,實現日誌記錄,緩存管理,加密,安全,等等

這也避免了,成功例子三的缺點,可以只在一個地方讀取配置

我們這裏添加一個公共項目framework項目

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

1。同上(添加引用)這時是在framework公共項目裏添加就ok了,

2。在web項目的web.config中添加(位置還是在<configuration> 標籤下)

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"/>
</configSections>

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。在應用程序代碼中讀取配置

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

方法只有一種,即:

在公共層的AssemblyInfo.cs裏面添加

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

5.在公共層的單獨的寫日誌類中添加

public static void test()
        {
            log4net.ILog log = log4net.LogManager.GetLogger("MyLogger");
            log.Debug("hello");
        }

6。在web項目的webFom1.aspx.cs中Page_Load中

framework.Class1.test();

ok.搞定

具體log4net 的設置,我在這裏就不用多說了,一爲高人在網上翻譯的log4net的文章非常詳細,

這裏可以看到

http://blog.csdn.net/xssh913913/archive/2007/09/04/1772207.aspx

http://blog.csdn.net/nlxd3/relatedarticles/2044512.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章