效果:
描述:
利用log4net組件進行錯誤日志的記錄,log4net記錄錯誤的方式我所了解的有4種,No.1 文本形式記錄日志,No.2存儲到數據庫形式記錄日志,No.3控制台控制顯示日志,No.4Windows事件日志。本文所采用的是第一種形式------文本形式記錄日志。
首先,引用log4net.dll文件,然後創建一個config文件,進行配置日志的相關信息,比如:配置路徑,以及錯誤的顯示形式等。然後創建一個Global.asax應用程序文件,用於第一次訪問時執行配置文件。然後創建一個類,進行錯誤日志的整理,然後調用這個類進行寫入日志。
代碼:
配置文件(log.config)
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <root> <level value="ALL" /> <!--文件形式記錄日志--> <appender-ref ref="RollingLogFileAppender" /> </root> <!--輸出到文件中--> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <!--保存路徑--> <file value="log\\Log-" /> <!--是否續寫--> <appendToFile value="true" /> <!--按照文件的大小進行變換日志文件--> <rollingStyle value="Date" /> <!--保留的log文件數量 超過此數量後 自動刪除之前的 好像只有在 按Size分割時有效--> <param name="MaxSizeRollBackups" value="100"/> <param name="StaticLogFileName" value="false"/> <param name="DatePattern" value="yyyy-MM-dd".log""/> <encoding value="utf-8" /> <!--最小鎖定模型以允許多個進程可以寫入同一個文件--> <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> <!-- <maxSizeRollBackups value="10" /> <maximumFileSize value="1MB" /> --> <layout type="log4net.Layout.PatternLayout"> <param name="conversionPattern" value="時間:%d%n線程:[%t]%n類型:%-5p%n標題:%c%n內容:%m%n——————————%n" /> <param name="Header" value=" ----------------------header-------------------------- " /> <param name="Footer" value=" ----------------------footer-------------------------- " /> </layout> </appender> </log4net> </configuration>
應用程序(Global.asax)
protected void Application_Start(object sender, EventArgs e) { log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("~") + @"\log.config")); }
處理日志(logHelper.cs)
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace log4net_Write { public class logHelper { /// <summary> /// 生成日志信息——Fatal(致命錯誤) /// </summary> /// <param name="message">日志內容</param> public static void Fatal(string message) { log4net.ILog log = log4net.LogManager.GetLogger("Fatal"); if (log.IsFatalEnabled) { log.Fatal(message); } log = null; } /// <summary> /// 生成日志信息——Fatal(致命錯誤) /// </summary> /// <param name="name">名稱</param> /// <param name="message">日志內容</param> public static void Fatal(string name, string message) { log4net.ILog log = log4net.LogManager.GetLogger(name); if (log.IsFatalEnabled) { log.Fatal(message); } log = null; } /// <summary> /// 生成日志信息——Error(一般錯誤) /// </summary> /// <param name="message">日志內容</param> public static void Error(string message) { log4net.ILog log = log4net.LogManager.GetLogger("Error"); if (log.IsErrorEnabled) { log.Error(message); } log = null; } /// <summary> /// 生成日志信息——Error(一般錯誤) /// </summary> /// <param name="name">名稱</param> /// <param name="message">日志內容</param> public static void Error(string name, string message) { log4net.ILog log = log4net.LogManager.GetLogger(name); if (log.IsErrorEnabled) { log.Error(message); } log = null; } /// <summary> /// 生成日志信息——Warn(警告) /// </summary> /// <param name="message">日志內容</param> public static void Warn(string message) { log4net.ILog log = log4net.LogManager.GetLogger("Warn"); if (log.IsWarnEnabled) { log.Warn(message); } log = null; } /// <summary> /// 生成日志信息——Warn(警告) /// </summary> /// <param name="name">名稱</param> /// <param name="message">日志內容</param> public static void Warn(string name, string message) { log4net.ILog log = log4net.LogManager.GetLogger(name); if (log.IsWarnEnabled) { log.Warn(message); } log = null; } /// <summary> /// 生成日志信息——Info(一般信息) /// </summary> /// <param name="message">日志內容</param> public static void Info(string message) { log4net.ILog log = log4net.LogManager.GetLogger("Info"); if (log.IsInfoEnabled) { log.Info(message); } log = null; } /// <summary> /// 生成日志信息——Info(一般信息) /// </summary> /// <param name="name">名稱</param> /// <param name="message">日志內容</param> public static void Info(string name, string message) { log4net.ILog log = log4net.LogManager.GetLogger(name); if (log.IsInfoEnabled) { log.Info(message); } log = null; } /// <summary> /// 生成日志信息——Debug(調試信息) /// </summary> /// <param name="message">日志內容</param> public static void Debug(string message) { log4net.ILog log = log4net.LogManager.GetLogger("Debug"); if (log.IsDebugEnabled) { log.Debug(message); } log = null; } /// <summary> /// 生成日志信息——Debug(調試信息) /// </summary> /// <param name="name">名稱</param> /// <param name="message">日志內容</param> public static void Debug(string name, string message) { log4net.ILog log = log4net.LogManager.GetLogger(name); if (log.IsDebugEnabled) { log.Debug(message); } log = null; } } }
調用
protected void btn_Click(object sender, EventArgs e) { try { int intStr = Convert.ToInt32(tb.Text); tb2.Text = "轉換成功:" + intStr.ToString(); } catch (Exception ex) { //logHelper.Error(ex.ToString()); //logHelper.Debug(ex.ToString()); //logHelper.Fatal(ex.ToString()); //logHelper.Info(ex.ToString()); logHelper.Warn("warn名稱", ex.ToString()); } }
Demo下載:
http://files.cnblogs.com/files/xinchun/GetLog2.zip