log4net配置使用說明

此文檔是我在大道至簡的基礎上修改而成,再次表示謝謝!

(一)log4net的標準配置文檔示例

<?xmlversion="1.0"encoding="utf-8" ?>

<configuration>

  <configSections>

    <sectionname="log4net"

             type="log4net.Config.Log4NetConfigurationSectionHandler" />

  </configSections>

  <log4net>

    <root>

      <levelvalue="WARN" />

      <appender-refref="LogFileAppender" />

      <appender-refref="ConsoleAppender" />

    </root>

    <loggername="testApp.Logging">

      <levelvalue="DEBUG"/>

    </logger>

    <appendername="LogFileAppender type="log4net.Appender.FileAppender" >

      <paramname="File"value="log-file.txt" />

      <paramname="AppendToFile"value="true" />

      <layouttype="log4net.Layout.PatternLayout">

        <paramname="Header"value="[Header]&#13;&#10;"/>

        <paramname="Footer"value="[Footer]&#13;&#10;"/>

        <paramname="ConversionPattern"  value="%d [%t] %-5p %c[%x]  - %m%n" />

      </layout>

      <filtertype="log4net.Filter.LevelRangeFilter">

        <paramname="LevelMin"value="DEBUG" />

        <paramname="LevelMax"value="WARN" />

      </filter>

    </appender>

    <appendername="ConsoleAppender"   type="log4net.Appender.ConsoleAppender" >

      <layouttype="log4net.Layout.PatternLayout">

        <paramname="ConversionPattern"  value="%d [%t] %-5p %c [%x] -%m%n" />

      </layout>

    </appender>

  </log4net>

</configuration>

(二)log4net配置文件與程序的關聯

         log4net的配置可以放在應用程序的默認配置文件中(app.configweb.config),也可以在自己指定的配置文件中。log4net框架中是使用log4net.Config.XmlConfigurator在程序集的級別上定義配置文件。

      1winform程序中,如果配置在app.config文件中,配置文件的結構如示例。這時找到當前項目的Assemblyinfo.cs文件添加

          [assembly:log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch= true)]  app.config文件屬性設置保持默認。

      2winform程序中,如果配置在自定義文件中如“Config.txt”中。這時找到當前項目的Assemblyinfo.cs文件添加

          [assembly:log4net.Config.XmlConfigurator(ConfigFile="config.txt", Watch =true)]   Config.txt文件的屬性要設置爲複製。就是要輸出到輸出目錄。

         這個時候配置可以省略示例模版中<configSection>節點裏的<section>節點。

      

         ConfigFile:指出了我們的配置文件的路徑及文件名,包括擴展名。

         ConfigFileExtension:如果我們對被編譯程序的程序集使用了不同的文件擴展名,那麼我們需要定義這個屬性,缺省的,程序集的配置文件擴展名爲”config”

           Watch (Boolean屬性): log4net框架用這個屬性來確定是否需要在運行時監視文件的改變。如果這個屬性爲true,那麼FileSystemWatcher將會被用來監視文件的改變,重命名,刪除等事件。

         其中:ConfigFileConfigFileExtension屬性不能同時使用,ConfigFile指出了配置文件的名字,例如,ConfigFile=”Config.txt”

ConfigFileExtension則是指明瞭和可執行程序集同名的配置文件的擴展名,例如,應用程序的名稱是”test.exe”,ConfigFileExtension=”txt”,則配置文件就應該是”test.exe.txt”

      也可以在程序代碼中用DOMConfigurator類打開配置文件。類的構造函數需要一個FileInfo對象作參數,以指出要打開的配置文件名。這個方法和前面在程序集裏設置屬性打開一個配置文件的效果是一樣的。

         log4net.Config.DOMConfigurator.Configure(newFileInfo("TestLogger.Exe.Config"));

         DOMConfigurator類還有一個方法ConfigureAndWatch(..),用來配置框架並檢測文件的變化。

(二)節點分析

         在配置章節中,定義section節點。節點名稱爲:須爲log4net,且大小寫敏感。

         <configSections>

                    <sectionname="log4net"

                              type="log4net.Config.Log4NetConfigurationSectionHandler" />

         </configSections>

(三)log4net節點說明

       1)節點支持的屬性,debug,update,threshold三個屬性

         debug 可選,取值是truefalse,默認是false。設置爲true,開啓log4net的內部調試。

         update可選,取值是Merge(合併)Overwrite(覆蓋),默認值是Merge。設置爲Overwrite,在提交配置的時候會重置已經配置過的庫。  

         threshold可選,取值是repository(庫)中註冊的level,默認值是ALL

      2)支持子元素

       appender  0或多個

         logger 0或多個

         renderer 0或多個

         root 最多一個

         param 0或多個

 

(四)root節點說明  

      1logger,所有其它logger都默認繼承它。root元素沒有屬性。

      2)支持的子元素

                   appender-ref 0個或多個,要引用的appender的名字。

·                  level 最多一個。只有在這個級別或之上的事件纔會被記錄。

·                  param 0個或多個,設置一些參數。

                   <root>

                             <levelvalue="WARN" />

                            <appender-refref="LogFileAppender" />

                            <appender-refref="ConsoleAppender" />

                    </root>

(五)Logger節點說明

         1)支持的屬性name,Additivity兩個屬性       

           name必須的,logger的名稱

          additivity 可選,取值是truefalse,默認值是true。設置爲false時將阻止父logger中的appender

       2)支持的子元素:

         appender-ref 0個或多個,要引用的appender的名字。

          ·level最多一個。只有在這個級別或之上的事件纔會被記錄。

          ·param 0個或多個,設置一些參數。

         例如:<loggername="testApp.Logging">

                           <levelvalue="DEBUG"/>

                       </logger>

 

(六)Appender節點說明

      1)定義日誌的輸出方式,只能作爲 log4net 的子元素。name屬性必須唯一,type屬性必須指定。支持name,type兩個屬性。

                   name 必須的,Appender對象的名稱

                   type 必須的,Appender對象的輸出類型

         2)支持的子元素:

·                  appender-ref 0個或多個,允許此appender引用其他appender,並不是所以appender類型都支持。

                   ·filter 0個或多個,定義此app使用的過濾器。

                   ·layout 最多一個。定義appender使用的輸出格式。

·                  param 0個或多個,設置Appender類中對應的屬性的值。

           例如: LogFileAppender 節點日誌文件輸出。type="log4net.Appender.FileAppender"

                           ConsoleAppender節點控制檯輸出。type="log4net.Appender.ConsoleAppender"  

(七)Filter節點說明

         過濾器,只能作爲<appender>的子元素。

         支持的屬性:

                   type 必須的,Filter的類型

                   支持的子元素:param 0個或多個,設置一些參數。

(八)Layout節點說明

         佈局,只能作爲<appender>的子元素。

         支持的屬性:

                   type 必須的,Layout的類型

 

                   支持的子元素:param 0個或多個,設置一些參數。

(九)Param

         <param>元素可以是如何元素的子元素。

 

         支持的屬性:

                   name 必須的,取值是父對象的參數名。

                   value 可選的,valuetype中,必須有一個屬性被指定。value是一個能被轉化爲參數值的字符串。

                   type 可選的,valuetype中,必須有一個屬性被指定。type是一個類型名,如果type不是在log4net程序集中定義的,就需要使用全名。

                   支持的子元素:param 0個或多個,設置一些參數。

(十)Log4net xsd

        好多剛開始接觸.Net不久的人一定會問.xsd文件是幹嘛的?通俗點說這東西就是用來制定目標xm文檔規則的,它是解釋性的。大家一定有這個經驗就是當你在App.config文件中寫配置文件時會自動出現智能提示,而且在書寫不規範或錯誤時還會出現警告。在後臺其作用的就是對應的.xsd文件。好了不聊這個了,爲了讓我們在編輯log4Net配置文件時,也能有對應的提示和糾錯功能。下面是我找到的log4net.xsd文件(鬱悶,好像不能直接上傳。哎)

log4net.xsd

使用方法是,把這個文件拷貝到D:\Program Files\Microsoft Visual Studio 8\Xml\Schemas目錄下(根據你vs的安裝目錄修改地址),在配置log4net結點時,加上xmlns="urn:log4net"的命名空間。就可以獲得智能提示和正確的錯誤提醒。

<log4net xmlns="urn:log4net">

 

 在後續中,我將提供log4net輸出到不同媒介的具體示例。

 

 

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