1、安装log4net插件
新建Asp.net MVC4项目,并在Nuget控制台输入命令,或者直接搜索log4net在线安装,安装log4net
>Install-Package log4net -Version 2.0.15
2、配置web.config文件
1 | < section ></ section > |
日志级别分类(从高到低):OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL
3、初始化log4net
在Global.asax中初始化log4net配置
log4net.Config.XmlConfigurator.Configure();
4、定义异常拦截器
自定义异常拦截器,出现控制器action方法调用出现异常时,将异常信息统一加入到全局队列中,避免日志写入文件并发冲突。
1 2 3 4 5 6 7 8 9 | public class MyErrorAttribute:HandleErrorAttribute { public static Queue ExceptionQueue = new Queue(); public override void OnException(ExceptionContext filterContext) { ExceptionQueue.Enqueue(filterContext.Exception); base .OnException(filterContext); } } |
将全局默认异常处理器替换为自己定义的。
1 2 3 4 5 6 7 8 | public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { //filters.Add(new HandleErrorAttribute());//默认异常处理器 filters.Add( new MyErrorAttribute()); //自定义异常处理器 } } |
5、后台线程轮询异常队列,将日志写入到文件
启动类Global.asax.cs文件中定义后台线程,处理异常队列中日志的输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //启动后台线程,周期性轮询异常队列,将异常输出到文件 ThreadPool.QueueUserWorkItem(o => { while ( true ) { if (MyErrorAttribute.ExceptionQueue.Count>0) { Exception ex = MyErrorAttribute.ExceptionQueue.Dequeue(); if (ex!= null ) { ILog log = LogManager.GetLogger( "testError" ); log.Error(ex.ToString()); } else { Thread.Sleep(50); } } else { Thread.Sleep(50); } } }); |
6、控制器中定义异常测试方法
1 2 3 4 5 6 7 | public ActionResult TestLog() { int result = 0; int x = 1, y = 0; result = x / y; return View(); } |
7、启动程序测试action方法
查看项目根目录App_Data,生成了日志文件Logs_20230520.txt
查看日志内容
到此这篇关于log4net在Asp.net MVC4中的使用的文章就介绍到这了,更多相关Asp.net MVC4使用log4net内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!