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)在公共日志类中注册
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库