查看文章索引請通過http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html
IBatis.Net中提供了方便的日志處理,可以引用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="------------------------------------------------------------
" />
<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] " />
<footer value="[Footer] " />
<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下載