MVC如何使用Log4Net进行错误日志记录

发布时间:2021-09-28 15:26:44

在web应用运行过程中,我们难免会遇到程序运行异常,这个时候我们就应该将异常信息记录下来,以便开发人员和维护人员对异常原因进行还原,对异常原因进行修复。在asp平台中进行日志记录的组件也有很多,如log4、monlogging等,我们这里选用log4进行异常日志的记录。

1.捕获异常

MVC如何使用Log4Net进行错误日志记录

在aspmvc中提供了一个全局的异常处理过滤器:handleerrorattribute,可以通过该过滤器捕获异常信息。

我们在models文件夹下新建类型log4exceptionattribute,继承handleerrorattribute类,同时重写onexception方法来捕获异常数据:

usingsystem.web.mvc;namespacepms.webapp.models{publicclasslog4exceptionattribute:handleerrorattribute{///

///重写onexception方法来捕获异常数据///

///publicoverridevoidonexception(exceptioncontextfiltercontext){base.onexception(filtercontext);//捕获当前异常数据varex=filtercontext.exception;}}}

新建过滤器后我们还需要在global文件中调用的registerglobalfilters方法中完成自己定义异常处理过滤的注册。

usingsystem.web.mvc;usingpms.webapp.models;namespacepms.webapp{publicclassfilterconfig{publicstaticvoidregisterglobalfilters(globalfiltercollectionfilters){//filters.add(newhandleerrorattribute());filters.add(newlog4exceptionattribute());}}}

2.考虑到多用户并发*作时可能产生的问题,我们需要新建一个队列来进行异常信息的暂存,同时开辟一个线程专门对队列中的异常信息进行处理。

在log4exceptionattribute类中新建一个静态的异常类型的队列,在发生异常后,程序自动触发onexception方法,方法中将当前的异常信息入队后,跳转到错误页面。

usingsystem;usingsystem.collections.generic;usingsystem.web.mvc;namespacepms.webapp.models{publicclasslog4exceptionattribute:handleerrorattribute{publicstaticqueueexceptions=newqueue();///

///重写onexception方法来捕获异常数据///

///publicoverridevoidonexception(exceptioncontextfiltercontext){base.onexception(filtercontext);//捕获当前异常数据varex=filtercontext.exception;//将异常数据入队exceptions.enqueue(ex);//跳转到错误页面filtercontext.httpcontext.response.redirect("/error.html");}}}

log4的配置是在应用程序配置文件中进行的,我们先在配置文件中进行log4的配置。log4需要配置的节点位置和spring完全相同,首先需要在configsessions中新增子节点,然后在configuration节点中增加log4节点完成具体配置。

...

在配置文件中可以对日志记录的信息、格式、文件名等作出具体的配置,下面是配置信息的详解

<"1.0"?>

在global文件中的application_start方法中开启一个线程,用于将队列中的错误信息写入日志文件。

usingsystem.linq;usingsystem.threading;usingsystem.web.http;usingsystem.web.mvc;usingsystem.web.optimization;usingsystem.web.routing;usinglog4;usingpms.webapp.models;usingspring.web.mvc;namespacepms.webapp{//注意:有关启用iis6或iis7经典模式的说明,//请访问go.microsoft/?linkid=9394801publicclassmvcapplication:springmvcapplication//httpapplication{protectedvoidapplication_start(){log4.config.xmlconfigurator.configure();//读取log4配置信息arearegistration.registerallareas();webapiconfig.register(globalconfiguration.configuration);filterconfig.registerglobalfilters(globalfilters.filters);routeconfig.registerroutes(routetable.routes);bundleconfig.registerbundles(bundletable.bundles);//开启一个线程,扫描异常信息队列.varfilepath=server.mappath("/log/");threadpool.queueuserworkitem((a)=>{while(true){//判断队列中是否有数据if(log4exceptionattribute.exceptions.any()){//出队一条异常信息varex=log4exceptionattribute.exceptions.dequeue();//若异常信息不为空if(ex==null)continue;//将异常信息写入到日志文件中varlogger=logmanager.getlogger("errormsg");logger.error(ex.tostring());}else{//若异常信息队列为空,则线程休息三秒thread.sleep(3000);}}},filepath);}}}

成功完成错误日志的配置。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

看了MVC如何使用Log4Net进行错误日志记录还看了:
  • 电脑使用记录如何查看

    导语:怎么查看电脑的实用记录。开机关机使用时间。上网实用记录等。下面由小编为大家整理的电脑使用记录如何查看方法,希望可以帮助到大家!电脑使用记录如何查看查看开机关机时间的记录可以打开c盘里面的windows文件夹进入之后多按几次s,然后找到...

  • 电脑如何查看使用记录

    很多朋友想查看自己之前使用过的文件或者文档来查询资料,或者是想看电脑是否被人使用过,但是,我们要如何查看电脑使用记录呢?下面小编教大家查看电脑使用记录小技巧,不用担心找不到电脑使用记录。1、查看电脑开关机开“我的电脑”,c盘windows目...

  • 如何正确对待错误心情日记

    “错”这个字大家并不陌生,不管是我们的生活,还是工作、学习,都有它的影子。“错”对我们每个人来说都是平等的,有些人把它当成了个人前进的动力,因为“错”能使人牢牢地记住,以后不要再犯同样的错误。它能使一个弱者变成强者。我在一次考试中考得不理想...

  • 如何查看电脑的使用记录

    查看指检查,视察,看望,探望事物的情况。下面,小编为大家分享查看电脑使用记录的方法,希望对大家有所帮助!查看开机关机时间的记录可以打开c盘里面的windows文件夹进入之后多按几次s,然后找到schedlgu文本文档。然后在这里面就能看到开...

  • 使用如法*制进行造句

    1、她见别人自制的拎兜挺漂亮;也如法*制了一个。2、电脑上介绍了很多方法,我如法*制,果然成功了。3、我们看着菜谱如法*制;居然自己做成了松花蛋。4、他做事拖泥带水,我们如法*制他的做法终于让他改掉了这个坏习惯。5、两个茶房将第二箱抬到舱面...