開發中經常使用到日志記錄功能,Log4.net可以將日志記錄到文件中,也可以記錄到數據庫中,使用非常方便,之前也一直在用,最近也參照了一下網上的資料,想簡單總結一下
本文重在通過通用日志類來使用Log4.net, 至於如何配置Log4.Net節點,網上的資料很多,這里沒有提到
1.首先創建一個Log4.Net的公共操作類
/// <summary> /// log4net日志專用 /// </summary> public class LogHelper { private static readonly log4net.ILog Instance = log4net.LogManager.GetLogger("loginfo"); public static void SetConfig() { log4net.Config.XmlConfigurator.Configure(); } public static void SetConfig(string filePath) { FileInfo configFile = new FileInfo(filePath); log4net.Config.XmlConfigurator.Configure(configFile); } public static void SetConfig(FileInfo configFile) { log4net.Config.XmlConfigurator.Configure(configFile); } /// <summary> /// 記錄普通文件記錄 /// </summary> /// <param name="info"></param> public static void Info(string info) { if (Instance.IsInfoEnabled) { Instance.Info(info); } } /// <summary> ///記錄調試信息 /// </summary> /// <param name="info"></param> /// <param name="se"></param> public static void Debug(string info) { if (Instance.IsErrorEnabled) { Instance.Debug(info); } } /// <summary> ///記錄警告信息 /// </summary> /// <param name="info"></param> /// <param name="se"></param> public static void Warn(string info) { if (Instance.IsWarnEnabled) { Instance.Warn(info); } } /// <summary> /// 記錄錯誤日志 /// </summary> /// <param name="info"></param> /// <param name="se"></param> public static void Error(string info, Exception se) { if (Instance.IsErrorEnabled) { Instance.Error(info, se); } } /// <summary> /// 記錄嚴重錯誤 /// </summary> /// <param name="info"></param> /// <param name="se"></param> public static void Fatal(string info, Exception se) { if (Instance.IsFatalEnabled) { Instance.Fatal(info, se); } } }
2.注冊Log4.net 的配置信息,本人喜歡后面2中方式配置,這樣其他程序集(如Business程序集)需要記錄日志時,不需要再配置log4.net了,直接調用日志公共類即可
(1)可以在應用程序啟動時注冊Log4.net配置信息(如Global.asax中),不過其他程序集如果要記錄日志時,需要重新配置log4.net信息
protected void Application_Start(object sender, EventArgs e) { //加載日志配置文件,只需要在程序啟動時加載一次 string filePath = AppDomain.CurrentDomain.BaseDirectory + "Log4net.config"; LogHelper.SetConfig(filePath); }
(2)在日志公共類LogHelper.cs所在程序集的AssemblyInfo.cs文件中進行注冊
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4net.config", Watch = true)]
(3)在日志公共類LogHelper.cs的命名空間上進行注冊
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4net.config", Watch = true)] namespace LogUtility { /// <summary> /// log4net日志專用 /// </summary> public class LogHelper {
....
}
3. 記錄日志
protected void Page_Load(object sender, EventArgs e) { #region 通過公共類調用 //跨程序集調用寫入Log日志 Services.TestService.TestLog(); //記錄一般信息 LogHelper.Info("info"); //記錄調試信息 LogHelper.Debug("debug"); //記錄警告信息 LogHelper.Warn("warn"); //記錄錯誤日志 LogHelper.Error("error", new Exception("發生了一個異常")); //記錄嚴重錯誤 LogHelper.Fatal("fatal", new Exception("發生了一個致命錯誤")); #endregion 通過公共類調用 Response.Write("日志記錄完畢。</br>"); }
4. 參考資料,參考了下面一些內容
http://blog.csdn.net/zhoufoxcn/article/details/2220533
http://blog.csdn.net/zhoufoxcn/article/details/6029021
http://www.cnblogs.com/ringwang/archive/2012/07/06/2579775.html
http://www.cnblogs.com/zfanlong1314/p/3662679.html
5.本例的代碼(演示了在WinForm、WebForm上的使用配置)
(1)直接在應用啟動時注冊
(2)在公共日志類中注冊
