?
?
log4Net是用來記錄日志的,可以將程序運(yùn)行過程中的信息輸出到一些地方(文件,數(shù)據(jù)庫,EventLog等),日志就是程序的黑匣子,可以通過日志查看系統(tǒng)的運(yùn)行過程,從而發(fā)現(xiàn)系統(tǒng)的問題。
1.引用log4net.dll
? ?bin et2.0 elease,不要引用debug版本
2.在Web.Config添加配置
把下面配置信息加到web.config中
Log4Net配置
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<!-- Define some output appenders -->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Log/test.txt"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="1024KB"/>
<rollingStyle value="Size"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
</configuration>
?下面再解釋里面的節(jié)點(diǎn)。
3.初始化:在程序最開始加入log4net.Config.XmlConfigurator.Configure();不要加到頁面的Load
? ?在Global.asax.cs中添加代碼
log4net.Config.XmlConfigurator.Configure();//讀取了配置文件中關(guān)于log4Net配置信息
將把日志寫到文件中的代碼改為:
if (ex != null)
{
//將異常信息寫到日志文件中
// string fileName = DateTime.Now.ToString("yyyy-MM-dd");
// File.AppendAllText(filePath + fileName + ".txt", ex.ToString(), System.Text.Encoding.UTF8);
ILog logger = LogManager.GetLogger("errorMsg");
logger.Error(ex.ToString());
}
注意:引入的命名空間為:using log4net;不要引用到:using Common.Logging(這是spring中的日志記錄組件)
執(zhí)行一段出錯(cuò)的代碼,在項(xiàng)目的Log文件夾中,發(fā)現(xiàn)有一個(gè)test.txt日志信息文件,里面記錄了出錯(cuò)的信息。
其中第一行為:
?
對配置的參數(shù)解釋:
代碼:
Log4Net配置
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<!-- Define some output appenders -->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Log/test.txt"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="1024KB"/>
<rollingStyle value="Size"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
</configuration>
Appender:可以將日志輸出到不同的地方,不同的輸出目標(biāo)對應(yīng)不同的Appender:RollingFileAppender(滾動(dòng)文 ? ? ? ? ? ? ? ? ? ? ? 件)、AdoNetAppender(數(shù)據(jù)庫)、SmtpAppender (郵件)等。
file: ?日志的文件名
appendToFile:追加到文本后
maximumFileSize:文件最大多少KB
maxSizeRollBackups:最多存多少個(gè)日志文件,假設(shè)test.txt能存1M文件,當(dāng)test.txt存滿了,log4net會(huì)創(chuàng)建別外一個(gè)文件假設(shè)叫test1.txt,然后把test.txt里的1M內(nèi)容復(fù)制到test1.txt里,然后清空test.txt里的內(nèi)容再裝日志信息,再滿了就再建一個(gè)文件假設(shè)叫test2.txt,同前面一樣,直到設(shè)定的最大文件數(shù)10個(gè),再滿了,就會(huì)刪除第一個(gè)備份的內(nèi)容把現(xiàn)在的內(nèi)容移進(jìn)去。
rollingStyle:文件滾動(dòng)的方式按大小
staticLogFileName:靜態(tài)的文件名
layout:日志文件的樣式,%date是日期,打開日志第一行可以看到,%thread出錯(cuò)線程Id,%-5level錯(cuò)誤的等級,%logger是global.asax.cs里的參數(shù),%message錯(cuò)誤消息,%newline最后換行。
?
4.完整的log4net配置
前面的都是基本的配置,平時(shí)項(xiàng)目中可以用下面的配置存到App_Code文件夾下
<log4net>
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
<!-- Set root logger level to ERROR and its appenders -->
<root>
<level value="ALL"/>
<appender-ref ref="SysAppender"/>
</root>
<!-- Print only messages of level DEBUG or above in the packages -->
<logger name="WebLogger">
<level value="DEBUG"/>
</logger>
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="App_Data/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender>
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
</log4net>
RollingStyle:Date ? 按照日期記錄日志
DatePattern:日志文件名
StaticLogFileName:false 文件名動(dòng)態(tài)的方式
?
這樣就完成了,這里是把日志用文本的方式記錄,如果要把信息記錄在數(shù)據(jù)庫或以郵件的方式發(fā)送的話也是只改配置不需改代碼就可以的了,請自行查找相關(guān)配置。
本文摘自 :https://blog.51cto.com/u