IBatis.net使用二–用Log4net寫日誌

來源:互聯網
上載者:User

查看文章索引請通過http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html

IBatis.Net中提供了方便的Tlog,可以引用IBatisNet.Common.Logging.Log4Net.dll寫日誌,當然IBatisNet.Common.dll這個是必須引用的。

IBatis.Net處理日誌不需要寫代碼實現,只需要配置就可以了,下面貼出Log4Net的設定檔Log4net.config,並加以解釋。(這個檔案一般放在網站根目錄下,當然放其他目錄下也行,只要能在程式運行時的global.asa的Application_Start方法裡加上監視即可)

第一步: 首先添加在程式運行時的Application_Start方法裡加上監視:

//ConfigureAndWatch這個是添加Log4net.config監視,並在修改Log4net.config的時候也及時的修改配置

log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "Log4net.config"));

第二步:Log4net.config的配置,注釋已經加上: 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>

<section name="log4net"
            type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0, Culture=Neutral, PublicKeyToken=bf100aa01a5c2784" />
</configSections>
 
<appSettings>
  <add key="log4net.Internal.Debug" value="true"/>
</appSettings>
  <!--每個<appender>子節點代表一種記錄日誌的方式-->
<log4net>
  <!-- 這個日誌是系統其他地方寫日誌時候用到的設定 -->
  <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="------------------------------------------------------------&#xD;&#xA;" />
      <ConversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline%newline%newline" />
    </layout>
  </appender>
  <root>
    <level value="All" />
    <appender-ref ref="RollingLogFileAppender" />
  </root>

<!-- IBatisLogFile的日誌 -->

  <appender name="IBatisLogFile" type="log4net.Appender.RollingFileAppender">
    <file value="./Logs\iBatis_" />
    <appendToFile value="true" />
    <datePattern value="yyyyMMdd'.txt'" />
    <rollingStyle value="Date" />
    <staticLogFileName value="false" />
    <layout type="log4net.Layout.PatternLayout">
      <header value="[Header]&#13;&#10;" />
      <footer value="[Footer]&#13;&#10;" />
      <conversionPattern value="%date{dd/MM/yyyy-HH:mm:ss} %m%newline%exception" />
    </layout>
  </appender>

<!-- IBatisMapperLogFile的日誌 -->

  <appender name="IBatisMapperLogFile" type="log4net.Appender.RollingFileAppender">
    <file value="./Logs\iBatisMapper_" />
    <appendToFile value="true" />
    <datePattern value="yyyyMMdd'.txt'" />
    <rollingStyle value="Date" />
    <staticLogFileName value="false" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date{dd/MM/yyyy-HH:mm:ss} %m%newline%exception" />
    </layout>
  </appender>

<!-- IBatisCacheLogFile的日誌 -->

  <appender name="IBatisCacheLogFile" type="log4net.Appender.RollingFileAppender">
    <file value="./Logs\iBatisChache_.log" />
    <appendToFile value="true" />
    <datePattern value="yyyy-MM-dd" />
    <rollingStyle value="Date" />
    <staticLogFileName value="false" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date{dd/MM/yyyy-HH:mm:ss} %m%newline%exception" />
    </layout>
  </appender>
 

<!-- 注意一定要加additivity="false",因為異常日誌是往上傳遞的,如果不加這個屬性,在系統的總日誌裡面也會有IBatisNet的日誌,這樣就重複記錄了 -->
  <logger name="IBatisNet" additivity="false">
    <level value="ALL"/>

<!--如果想增加日誌輸出目的地,增加<appender-ref>節點就是了,注意後面的ref是在config中配置的appender name-->
    <appender-ref ref="IBatisLogFile" />
  </logger>

<!-- 注意一定要加additivity="false",因為異常日誌是往上傳遞的,如果不加這個屬性,在系統的總日誌裡面,以及IBatisNet裡的日誌裡,也會有IBatisNet.DataMapper的日誌,這樣就重複記錄了 -->

  <logger name="IBatisNet.DataMapper" additivity="false">
    <level value="ALL"/>   
    <appender-ref ref="IBatisMapperLogFile" />
  </logger>
</log4net>
</configuration>

最後解釋一下logger的name,這個name是代表的代碼裡的命名空間,也就是我們在代碼裡這麼寫的時候,ILog log=log4net.LogManager.GetLogger(typeof(Program)); 這個GetLogger(typeof(Program))也是擷取命名空間的,這個擷取的值和設定檔的name的值一樣的時候,就根據appender-ref寫到不同的介質去了。

另外logger的name是有繼承關係的,比如

//a是代表命名空間,表示該命名空間下的日誌由此logger負責

name=a

//a.b代表命名空間下某個類,表示該命名空間下的日誌由此logger負責

name=a.b

那麼a.b就會繼承a,如果在a.b上不設定additivity="false",那麼a.b的日誌也會寫到a裡面去

第三步:在Web.Config裡配置,iBATIS.NET通過IBatisNet.Common.Logging寫的日誌

<configSections>
    <sectionGroup name="iBATIS">
      <section name="logging" type="IBatisNet.Common.Logging.ConfigurationSectionHandler, IBatisNet.Common"/>
    </sectionGroup>
 </configSections>
 
  <iBATIS>
    <logging>
      <logFactoryAdapter type="IBatisNet.Common.Logging.Impl.Log4NetLoggerFA, IBatisNet.Common.Logging.Log4Net">
        <!--
        inline :log4net 節點在App.Config/Web.Config 檔案中配置
        file:使用外置設定檔 (需要configFile參數配合使用,<arg key="configFile" value="外部設定檔")
        file-watch: 與"file"一樣,只是多了一個監視外部設定檔的變動功能,如果有變動則重新載入配置。
        external:IBatis將不會嘗試配置Log4Net。
        -->
        <arg key="configType" value="external"/>
      </logFactoryAdapter>
    </logging>
  </iBATIS>

運行網站,發現網站根目錄下已經有了logs這個檔案夾,並開始寫日誌了

demo下載

聯繫我們

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