Log4.net使用配置
开发中经常使用到日志记录功能,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)在公共日志类中注册