1、 Log4net是什麼、優勢html
用來記錄程序日誌,優勢:1.提供應用程序運行時的精確環境,可供開發人員儘快找到應用程序中的Bug;2.日誌信息能夠輸出到不一樣的地方(數據庫,文件,郵箱等)。web
2、 Log4net的結構數據庫
log4net 有四種主要的組件,分別是Logger(記錄器), Repository(庫), Appender(附着器)以及 Layout(佈局).app
2、 Log4net的結構ide
第一步:首先下載log4net.dll並在項目中引用log4net.dll文件。佈局
第二步:在Web.config文件中進行添加configSections的節點spa
<configSections> <!--log4net配置--> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections>
第三步:添加log4net配置節點debug
<!--log4net日誌配置--> <log4net> <logger name="logerror"> <level value="ERROR" /> <appender-ref ref="ErrorAppender" /> </logger> <logger name="loginfo"> <level value="INFO" /> <appender-ref ref="InfoAppender" /> </logger> <!--<logger name="logdebug"> <level value="DEBUG"> <appender-ref ref="DebugAppender" /> </level> </logger>--> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="C:\ErrorLog.txt" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <param name="MaximumFileSize" value="1MB" /> <param name="RollingStyle" value="Size" /> <param name="StaticLogFileName" value="true" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%-5p %d [%c] %m%n" /> </layout> </appender> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="C:\InfoLog.txt" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <param name="MaximumFileSize" value="1MB" /> <param name="RollingStyle" value="Size" /> <param name="StaticLogFileName" value="true" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%-5p %d [%c] %m%n" /> </layout> </appender> <!--<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="C:\DebugLog.txt" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <param name="MaximumFileSize" value="1MB" /> <param name="RollingStyle" value="Size" /> <param name="StaticLogFileName" value="true" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%-5p %d [%c] %m%n" /> </layout> </appender>--> </log4net>
第四步:添加日記類logHelper調試
/// <summary> /// 使用LOG4NET記錄日誌的功能,在WEB.CONFIG裏要配置相應的節點 /// </summary> public class LogHelper { //log4net日誌專用 public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo"); public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror"); public static void SetConfig() { log4net.Config.XmlConfigurator.Configure(); } public static void SetConfig(FileInfo configFile) { log4net.Config.XmlConfigurator.Configure(configFile); } /// <summary> /// 普通的文件記錄日誌 /// </summary> /// <param name="info"></param> public static void WriteLog(string info) { if (loginfo.IsInfoEnabled) { loginfo.Info(info); } } /// <summary> /// 錯誤日誌 /// </summary> /// <param name="info"></param> /// <param name="se"></param> public static void WriteLog(string info, Exception se) { if (logerror.IsErrorEnabled) { logerror.Error(info, se); } }
第五步:添加Global.cs配置日誌
void Application_Start(object sender, EventArgs e) { //在應用程序啓動時運行的代碼 //初始日誌的配置 LogHelper.SetConfig(); }
void Application_Error(object sender, EventArgs e) { // 在出現未處理的錯誤時運行的代碼 Exception ex = HttpContext.Current.Server.GetLastError(); Base_Teacher teacher = Session[UCSKey.SESSION_LoginInfo] as Base_Teacher; if (teacher != null) { //記錄錯誤日誌 // LogHelper.WriteErrorLog("\r\n用戶ID:" + teacher.YHZH + "\r\n用戶名:" + teacher.XM + "\r\n客戶機IP:" + Request.UserHostAddress + "\r\n錯誤地址:" + Request.Url + "\r\n異常信息:" + Server.GetLastError().Message, ex); //記錄普通日誌 LogHelper.WriteInfoLog("\r\n用戶ID:" + teacher.YHZH + "\r\n用戶名:" + teacher.XM + "\r\n客戶機IP:" + Request.UserHostAddress + "\r\n錯誤地址:" + Request.Url + "\r\n錯誤時間:" + DateTime.Now); //記錄debug日誌 // LogHelper.WriteDebugLog("\r\n用戶ID:" + teacher.YHZH + "\r\n用戶名:" + teacher.XM + "\r\n客戶機IP:" + Request.UserHostAddress + "\r\n錯誤地址:" + Request.Url + "\r\n異常信息:" + Server.GetLastError().Message, ex); } }
第六步:頁面中使用
在try catch的catch中調用 loghelper類便可。
總結:
1.webconfig配置要靈活
2.不斷調試、多點耐心
tks:
代碼參考:http://www.cnblogs.com/ringwang/archive/2012/07/06/2579775.html
保存郵箱是、數據庫:http://www.poluoluo.com/jzxy/201311/249970.html