當前位置:首頁 > IT技術 > Web編程 > 正文

log4net日志記錄
2021-10-22 10:10:46

?

?

log4Net是用來記錄日志的,可以將程序運行過程中的信息輸出到一些地方(文件,數(shù)據庫,EventLog等),日志就是程序的黑匣子,可以通過日志查看系統(tǒng)的運行過程,從而發(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é)點。

3.初始化:在程序最開始加入log4net.Config.XmlConfigurator.Configure();不要加到頁面的Load

? ?在Global.asax.cs中添加代碼



log4net.Config.XmlConfigurator.Configure();//讀取了配置文件中關于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í)行一段出錯的代碼,在項目的Log文件夾中,發(fā)現(xiàn)有一個test.txt日志信息文件,里面記錄了出錯的信息。

其中第一行為:log4net日志記錄_錯誤日志記錄

?

對配置的參數(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:可以將日志輸出到不同的地方,不同的輸出目標對應不同的Appender:RollingFileAppender(滾動文 ? ? ? ? ? ? ? ? ? ? ? 件)、AdoNetAppender(數(shù)據庫)、SmtpAppender (郵件)等。

file: ?日志的文件名

appendToFile:追加到文本后

maximumFileSize:文件最大多少KB

maxSizeRollBackups:最多存多少個日志文件,假設test.txt能存1M文件,當test.txt存滿了,log4net會創(chuàng)建別外一個文件假設叫test1.txt,然后把test.txt里的1M內容復制到test1.txt里,然后清空test.txt里的內容再裝日志信息,再滿了就再建一個文件假設叫test2.txt,同前面一樣,直到設定的最大文件數(shù)10個,再滿了,就會刪除第一個備份的內容把現(xiàn)在的內容移進去。

rollingStyle:文件滾動的方式按大小

staticLogFileName:靜態(tài)的文件名

layout:日志文件的樣式,%date是日期,打開日志第一行可以看到,%thread出錯線程Id,%-5level錯誤的等級,%logger是global.asax.cs里的參數(shù),%message錯誤消息,%newline最后換行。

?

4.完整的log4net配置

前面的都是基本的配置,平時項目中可以用下面的配置存到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="&#13;&#10;----------------------header--------------------------&#13;&#10;" />
<param name="Footer" value="&#13;&#10;----------------------footer--------------------------&#13;&#10;" />
</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 文件名動態(tài)的方式

?

這樣就完成了,這里是把日志用文本的方式記錄,如果要把信息記錄在數(shù)據庫或以郵件的方式發(fā)送的話也是只改配置不需改代碼就可以的了,請自行查找相關配置。

本文摘自 :https://blog.51cto.com/u

開通會員,享受整站包年服務立即開通 >