在ASP.NET MVC中使用Log4Net进行多种HttpCode日志的记录

来源:互联网 发布:淘宝pc端链接转手机端 编辑:程序博客网 时间:2024/05/14 19:47

参考了以下两篇文章

MVC扩展Filter,通过继承HandleErrorAttribute,使用log4net或ELMAH组件记录服务端500错误、HttpException、Ajax异常等

ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常


总体设计

错误类型

错误入口

处理方法

Controller中的错误

(已经考虑到的)

在try-catch中记录日志

显示HttpCode500错误视图

Controller中的错误

(未考虑到的)

在继承HandleErrorAttribute的类中记录日志

显示HttpCode500错误视图

url地址错误

在全局处理Application_Start方法中处理

显示HttpCode404错误视图

其他错误

在全局处理Application_Start方法中处理

显示其他错误视图


第一步:在MVC中使用Log4Net记录日志:

1.  创建log4net.config.xml文件,配置Log4Net的节点。

2.  在Global.asax文件Application_Start()方法中添加业务功能,该业务来读取Log4Net配置文件内容,从而将配置文件与我们的应用程序联系起来(Log4Net注入到我们的应用程序中)。

3.  在Common下新建一个类ErrRecorder,初始化ILog,进行日志记录。以后凡是程序中想使用日志记录时,直接在try-catch中使用这个类下的WriteError()方法。

这种方法完全是自定义记录日志,所有错误的捕捉都是自己try-catch的。


第二步:

1.  自己建一个Attribute类,继承错误异常过滤器HandleErrorAttribute。

重写方法OnException(ExceptionContext filterContext)。  filterContext就是异常上下文  在这个方法中捕获异常信息。

2.  添加到全局过滤器中,filters.Add(new HandleErrorAttribute()) 写我们自己的异常处理信息属性

3.  在Global.asax全局文件的Application_Start()方法中使用Log4Net进行日志记录(Log4Net是线程安全的)


第三步:

在Application_Start中添加Application_Error事件。这个事件是在OnException()事件执行完成之后执行的,可以用来处理Filter遗漏的事件,如没有找到网页的404错误等


0 0