log4net日誌的簡單配置

                     提及來log4net,我一直都知道這個的存在,但實際在項目中還真是沒有去本身寫過的那,這一次我在項目完成後並無着急下一個項目的開始,因而忽然想起來是否添加一個日誌的編寫,因而開始了log4net的總結,下面就簡單的總結一下本身在添加log4net時間注意的。web

                     1.首先咱們在添加log4net以前須要添加其引用,這裏就經過在web網站的引用添加其nuget包引用來添加,以下所示:安全

                    

                     添加引用完成後,咱們打開web網站引用便可看到存在log4net,這就意味着咱們已經添加log4net引用成功。app

                     2.下面咱們就打開web網站的Properties文件夾下的AssemblyInfo.cs類文件,而後添加文件的配置:網站

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

                      3.ConfigFile是指定log4net使用.config文件來讀取配置信息,這裏我新建立了一個config文件,專業用來配置log4net。也能夠將其配置在web.config文件中,在log.config中,將其log4net文件配置在<configuration>節點中.spa

             <?xml version="1.0" encoding="utf-8"?>
              <configuration>
                <system.web>
                  <compilation debug="true" targetFramework="4.5" />
                  <httpRuntime targetFramework="4.5" />
                </system.web>
  
  
                <log4net>
                  <!--定義輸出到文件中-->
                  <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
                  <!--定義文件存放位置-->
                  <file value="~logs/"/>
                  <appendToFile value="true"/>
                   <rollingStyle value="Date"/>
                   <datePattern value="yyyy-MM-dd.txt"/>
                   <staticLogFileName value="false"/>
                   <layout type="log4net.Layout.PatternLayout">
                   <!--每條日誌末尾的文字說明-->
                   <footer value="" />
                   <!--value類型:"記錄時間:%date 線程ID:[%thread] 日誌級別:%-5level 出錯類:%logger property:[%property{NDC}] - 錯誤描述:%message%newline"-->
                   <conversionPattern value="%date ThreadID:[%thread] Log Level:%-5level Class:%logger Desp:%message%newline"/>
                   </layout>
                  </appender>
    
                  <!--定義文件輸出的名字以及文件的類型-->
                  <appender name="ErrorLogFileAppender" type="log4net.Appender.RollingFileAppender">
                  <!--定義文件存放的位置-->
                    <file type="log4net.Util.PatternString" value="..\log\%date{yyyyMMdd}\JOB_%property{jobid}_%date{yyyyMMdd}.log" />
                    <!--默認爲true。當文件存在時,是否在原文件上追加內容,但是True/false,-->
                   <appendToFile value="true" />
                   <!--默認爲true。爲true時,RollingStyler的date值將無效。且爲true時,須要在file裏指定文件名,全部日誌都會記錄在這個文件裏,false時間是相反的-->
                   <StaticLogFileName value="true"/>
                   <!--文件鎖類型,RollingFileAppender自己並非線程安全的,若是在程序中沒有進行線程安全的限制,能夠在這裏進行配置,確保寫入時的安全;文件鎖定的模式有三個:
                   FileAppender.ExclusiveLock, FileAppender.MinimalLock and FileAppender.InterProcessLock,默認是第一個值,排他鎖定,一次值能有一個進程訪問文件,關閉後
                   另一個進程才能夠訪問;第二個是最小鎖定模式,容許多個進程能夠同時寫入一個文件;-->
                   <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

                   <layout type="log4net.Layout.PatternLayout">
                   <!--value類型:"記錄時間:%date 線程ID:[%thread] 日誌級別:%-5level 出錯類:%logger property:[%property{NDC}] - 錯誤描述:%message%newline"-->
                   <conversionPattern value="%date{yyyy/MM/dd HH:mm:ss} %message%newline" />
                   </layout>
                   <filter type="log4net.Filter.LevelRangeFilter">
                   <levelMin value="INFO" />
                   <levelMax value="ERROR" />
                   </filter>
                  </appender>
                   <root>
                    <!--控制級別,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
                    <!--若是定義級別爲INFO,則INFO級別向下的級別,例如DEBUG日誌將不會被記錄-->
                    <!--若是沒有定義LEVEL的值,則缺省爲DEBUG-->
                    <level value="INFO" />
                    <appender-ref ref="ErrorLogFileAppender"/>
                   </root>
                 </log4net>
               </configuration>

                           針對filter我也是感受好奇,因而查找了一些資料,看到友友的總結,我仍是拿來用一下,但願下次我在寫log4net時間可以更快的尋找的到的啦,嘿嘿,下面就針對filter來總結一下,以下所示:線程

                <!--log4net裏面的filter類經常使用的爲:
                1、DenyAllFilter
                 拒絕所用的日誌輸出-->
                <filter type="log4net.Filter.LevelMatchFilter">
                 <param name="LevelToMatch" value="DEBUG" />
                </filter>
                <filter type="log4net.Filter.DenyAllFilter" />
                <!--上面的配置是若是日誌的輸出級別不符合DEBUG要求的話,則不輸出任何日誌。

                2、LevelMatchFilter
                 這個類裏面有兩個屬性,一個是LevelToMatch這個屬性,是要匹配輸出日誌的級別,例如:-->
                <filter type="log4net.Filter.LevelMatchFilter">
                 <param name="LevelToMatch" value="DEBUG" />
                </filter>
                <!--這樣的話,只有級別是DEBUG的日誌才能輸出。

                另外這個類還有一個重要的屬性就是AcceptOnMatch這個屬性是設置若是這個條件匹配的話,是否接受輸出打印,好比說:-->
                <filter type="log4net.Filter.LevelMatchFilter">
                 <param name="LevelToMatch" value="DEBUG" />
                </filter>
                <filter type="log4net.Filter.StringMatchFilter">
                 <param name="StringToMatch" value="debug" />
                </filter>

                <!--若是日誌的級別爲DEBVG的話,也就是說符合了第一個Filter的條件,日誌就輸出,則StringMatchFilter就不執行了。若是這樣寫的話,就會繼續向下執行過濾:-->
                <filter type="log4net.Filter.LevelMatchFilter">
                 <param name="LevelToMatch" value="DEBUG" />
                 <AcceptOnMatch value="false"></AcceptOnMatch>
                </filter>
                <filter type="log4net.Filter.StringMatchFilter">
                  <param name="StringToMatch" value="debug" />
                </filter>
                <!--若是這樣寫的話,即便第一個Filter符合了條件則第二個Filter也會繼續執行。

                3、LevelRangeFilter
                 配置文件是這樣的:-->
                <filter type="log4net.Filter.LevelRangeFilter">
                 <param name="LevelMin" value="DEBUG" />
                 <param name="LevelMax" value="ERROR" />
                </filter>

                <!--4、LoggerMatchFilter
                 配置文件是這樣的:-->
                <filter type="log4net.Filter.LoggerMatchFilter">
                 <param name="LoggerToMatch" value="Client" />
                </filter>

                <!--5、StringMatchFilter
                配置文件是這樣的:-->
                <filter type="log4net.Filter.StringMatchFilter">
                 <param name="StringToMatch" value="/blog/Client.Program" />
                </filter>

                           4.日誌的配置文件已經寫好,下面咱們就去Global.asax文件中進行配置,以下所示:debug

                 ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 

                            在Global.asax文件Application_Start方法下添加I上面的代碼塊便可。日誌

                            5.咱們在容易出錯的類中添加咱們的報錯信息,例如簡單的報錯ex錯誤,以下:code

                  try
                   {
                   }
                  catch (System.Exception ex)
                   {
                        LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Error(ex.Message);
                   }

                              好啦,這樣咱們在出錯時間就會建立log日誌,而後告訴咱們問題在哪裏,嘿嘿,就總結到這裏啦,加油親們!xml

相關文章
相關標籤/搜索