log4net配置經驗教訓

來源:互聯網
上載者:User

第一點:許可權問題,一定要給要寫入記錄檔的目錄寬鬆的許可權。
本人就是因為許可權問題浪費了很多時間。(因為iis user 的許可權是相對低的,log4net又需要建立檔案,所以許可權一定要給足,後面可以用應用程式集區配置)

本人想用單獨設定檔,所以基本步驟如下:
1:下載net4log,
具體地址就不貼了,給一個官網的配置說明頁:

http://logging.apache.org/log4net/release/manual/configuration.html

2:使用對應版本的dll,

       一定要使用對應版本的,我就因為使用的版本不對應,浪費了時間       2.0就是選2.0,4.0就選4.0

3:在項目中引入dll

4:使用單獨的設定檔,這樣做的好處–修改log4net的配置不會影響到整個應用重啟。我的路徑是:
Configure目錄下,log4netConfig.xml檔案
Configure\log4netConfig.xml
具體內容:自己可看相應的說明

<?xml version="1.0" encoding="utf-8" ?><configuration>  <configSections>    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />  </configSections>  <!--日誌記錄組建配置-->  <log4net>    <!-- Console部分log輸出格式的設定 -->    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value="%date [%thread] %-5level %logger %ndc - %message%newline" />      </layout>    </appender>    <!-- 記錄檔部分log輸出格式的設定 -->    <appender name="errorAppender" type="log4net.Appender.RollingFileAppender">      <filter type="log4net.Filter.LevelMatchFilter">        <levelToMatch value="ERROR" />      </filter>      <filter type="log4net.Filter.DenyAllFilter" />      <File value="Logs\\err.log" />      <PreserveLogFileNameExtension value="true" />      <appendToFile value="true" />      <rollingStyle value="Date" />      <datePattern value="yyyyMMdd" />      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />      </layout>    </appender>    <appender name="infoAppender" type="log4net.Appender.RollingFileAppender">      <filter type="log4net.Filter.LevelMatchFilter">        <levelToMatch value="INFO" />      </filter>      <filter type="log4net.Filter.DenyAllFilter" />      <File value="Logs\\info.log" />      <PreserveLogFileNameExtension value="true" />      <appendToFile value="true" />      <rollingStyle value="Date" />      <datePattern value="yyyyMMdd" />      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />      </layout>    </appender>    <appender name="debugAppender" type="log4net.Appender.RollingFileAppender">      <filter type="log4net.Filter.LevelMatchFilter">        <levelToMatch value="DEBUG" />      </filter>      <filter type="log4net.Filter.DenyAllFilter" />      <File value="Logs\debug.log" />      <PreserveLogFileNameExtension value="true" />      <appendToFile value="true" />      <rollingStyle value="Date" />      <datePattern value="yyyyMMdd" />      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />      </layout>    </appender>    <appender name="perfAppender" type="log4net.Appender.RollingFileAppender">      <filter type="log4net.Filter.LevelMatchFilter">        <levelToMatch value="INFO" />      </filter>      <filter type="log4net.Filter.DenyAllFilter" />      <File value="Logs\perf.log" />      <PreserveLogFileNameExtension value="true" />      <appendToFile value="true" />      <rollingStyle value="Date" />      <datePattern value="yyyyMMdd" />      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value="%date %logger - %message%newline" />      </layout>    </appender>     <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">      <file value="Logs\Log_" />      <appendToFile value="true" />      <rollingStyle value="Date" />      <datePattern value="yyyyMMdd'.txt'" />      <staticLogFileName value="false" />      <layout type="log4net.Layout.PatternLayout">        <header value="------------------------------------------------------------  " />        <ConversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />      </layout>    </appender>    <!-- Setup the root category, add the appenders and set the default level -->    <root>      <level value="ALL" />      <appender-ref ref="errorAppender" />      <appender-ref ref="infoAppender" />      <appender-ref ref="debugAppender" />    </root>    <!-- Setup the perfAppender category, add the appenders and set the default level 因為root與logger是父與子的關係,所以不應將:perfAppender在root中顯示,避免重複 -->    <logger name="Performance" additivity="false">      <level value="ALL" />      <appender-ref ref="perfAppender" />    </logger>  </log4net></configuration>

5:修改AssemblyInfo.cs
用於log4net能夠讀取設定檔。指定設定檔的路徑

 //定義log4net設定檔路徑//[assembly: log4net.Config.DOMConfigurator(ConfigFile = @"Configure\log4netConfig.xml", Watch = true)]//也可用上面的語句,上面的是老的方式[assembly: log4net.Config.XmlConfiguratorAttribute(ConfigFile = @"Configure\log4netConfig.xml", Watch = true)]

6:建立存放設定檔的目錄,** 並授權可寫很重要

**

7:在代碼中使用:
首先要定義在類體內:

//DataHandler 是類名,用於反射,多查查就知道了,用的時候替換掉;logger也是可以更改的,後面用的時候記住就好。 private static readonly ILog logger = LogManager.GetLogger(typeof(DataHandler));//在想要用的位置就可以使用了。具體的後面的是和設定檔對應的,如括弧內的是要輸出的字串。其中的Debug是記錄層級,以標明該日誌記錄是什麼層級的日誌,再在設定檔中appender內配置相應的層級就可以將內容寫入到相應的檔案中。 logger.Debug("Debug test");

結束,看對應目錄下是否有檔案。

log4net的架構分為四個要素:logger;appender;layout;filter。
logger是負責日誌的記錄者
appender提供記錄的介質
layout負責把記入的內容格式化
filter負責把內容進行篩選
可以說,整個過程就是一個日誌流水線,每個成員負責其中的一個環節
logger發出記錄資訊,appender接到資訊,根據內部的layout配置對記錄資訊格式化,根據filter決定此資訊是否被過濾掉,最後,將其序列化
log4net具體思路:通過設定檔執行個體化對象Logger(產生)->appender(接收)->過濾日誌(filter)->layout序列化輸出 appender的記錄介質

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.