這幾天剛好在調整一個項目,把一些自己不是很清楚的東西先試驗一下,這篇文章主要是對我在項目中需要使用Log4Net的一些記錄。網上有很多相關的教程,但是各有各的說法,我結合我自己這個項目的需要,首先,項目是分多層的,假如每一層都需要加入日志記錄,那該怎么辦呢,下面是我的一些操作步驟,記錄出來和大家分享一下,不足之處希望大家多拍板磚多多指教。
這個截圖是我的當前項目的層次結構,首先在Common層先添加log4net.dll的引用(僅需這里添加引用即可),然后創建一個log4net.config(見紅色數字2),我當前項目的1、4、5三處的log4net.config都是同一個,至於每層到底debug輸出到的文件名是要叫做”DigitalGolf2Bug.txt“呢還是叫”ServiceApiDebug.txt“呢,可以分開在相應的4或者5里面去配,有更多的層也是同理,如果對名稱無特別要求的話,那我默認debug是輸出到文件”debug.txt“,而error是輸出到”error.txt“,而info是輸出到文件”info.txt“,之后打開Common層的AssemblyInfo文件,添加紅色數字3的那句代碼。最后,在紅色數字5的log4net.config上點右鍵,選擇“屬性”--“復制到輸出目錄”--“始終復制”,這樣就配置就全部搞定了,只需要在你想輸出日志的地方調用LogHelper里面的方法即可。
log4net.config 配置文件:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- 注冊log4net --> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections> <log4net> <!-- 定義日志記錄器,可多個 --> <logger name="logerror"> <level value="ERROR" /> <appender-ref ref="LogErrorAppender" /> </logger> <logger name="logdebug"> <level value="DEBUG" /> <appender-ref ref="LogDebugAppender" /> </logger> <logger name="loginfo"> <level value="INFO" /> <appender-ref ref="LogInfoAppender" /> </logger> <!-- 輸出到錯誤信息文件 --> <appender name="LogErrorAppender" type="log4net.Appender.FileAppender"> <param name="File" value="error.txt" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <!-- 備份日志數目 --> <param name="MaxFileSize" value="10240" /> <!-- 日志文件大小10M --> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyy-MM-dd HH:mm:ss" /> <param name="RollingStyle" value="Date" /> <!-- 創建新文件的方式,Date表示按日期創建,Size是按文件大小,etc --> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%n異常時間:%d%n異常級別:%-5p%n異常內容:%m%n" /> </layout> </appender> <!-- 輸出到調試信息文件 --> <appender name="LogDebugAppender" type="log4net.Appender.FileAppender"> <param name="File" value="debug.txt" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <!-- 備份日志數目 --> <param name="MaxFileSize" value="10240" /> <!-- 日志文件大小10M --> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyy-MM-dd HH:mm:ss" /> <param name="RollingStyle" value="Date" /> <!-- 創建新文件的方式,Date表示按日期創建,Size是按文件大小,etc --> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%n調試時間:%d%n調試內容:%m%n" /> </layout> </appender> <!-- 輸出到一般信息文件 --> <appender name="LogInfoAppender" type="log4net.Appender.FileAppender"> <param name="File" value="info.txt" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <!-- 備份日志數目 --> <param name="MaxFileSize" value="10240" /> <!-- 日志文件大小10M --> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyy-MM-dd HH:mm:ss" /> <param name="RollingStyle" value="Date" /> <!-- 創建新文件的方式,Date表示按日期創建,Size是按文件大小,etc --> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%n調試時間:%d%n輸出內容:%m%n" /> </layout> </appender> </log4net> </configuration>
LogHelper.cs 類:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web.UI.WebControls; namespace Common { public class LogHelper { private static readonly log4net.ILog log_err = log4net.LogManager.GetLogger("logerror"); private static readonly log4net.ILog log_debug = log4net.LogManager.GetLogger("logdebug"); private static readonly log4net.ILog log_info = log4net.LogManager.GetLogger("loginfo"); /// <summary> /// 錯誤信息記錄 /// </summary> /// <param name="description">簡單描述</param> /// <param name="ex">錯誤信息</param> public static void LogError(string description, Exception ex) { if (log_err.IsErrorEnabled) log_err.Error(description, ex); } public static void LogError(object message) { if (log_err.IsErrorEnabled) log_err.Error(message); } /// <summary> /// 調試信息記錄 /// </summary> /// <param name="message">調試信息</param> public static void LogDebug(object message) { if (log_debug.IsDebugEnabled) log_debug.Debug(message); } public static void LogDebug(object message, Exception ex) { if (log_debug.IsDebugEnabled) log_debug.Debug(message, ex); } /// <summary> /// 一般信息記錄 /// </summary> /// <param name="message">一般信息</param> public static void LogInfo(object message) { if (log_info.IsInfoEnabled) log_info.Info(message); } public static void LogInfo(object message, Exception ex) { if (log_info.IsInfoEnabled) log_info.Info(message, ex); } } }
