MVC下Log4Net的配置和使用

    文章来源:万象互联 更新时间:2013-8-2 13:52:09
分享:

对于网站来讲,我们不能将异常信息显示给用户, Log4Net用来记录日志,可以将程序运行过程中的信息输出到文件,数据库中等地方,可以通过日志查看系统的运行过程,发现系统的问题。log4net的使用步骤如下:

1.添加对log4net.dll的引用。

2.在配置文件中添加配置。如下是在web.config的配置:

在configSections下节点配置为:

name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4Net"/>

配置为:

 

   其中,Appender:可以将日志输出到不同的地方,不同的输出目标对应不同的Appender:RollingFileAppender(滚动文件)、AdoNetAppender(数据库)、  

 SmtpAppender (邮件)等。 level(级别):标识这条日志信息的重要级别。None>Fatal>ERROR>WARN>DEBUG>INFO>ALL,设定一个Level,那么低于这个Level的日志是不会被写到Appender中的。

3.在程序一开始的时候,我们需要在Global.asax.cs文件中的Application_Start事件中进行一下初始化配置。

 protected void Application_Start()

{

AreaRegistration.RegisterAllAreas();

// 默认情况下对 Entity Framework 使用 LocalDB

Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");

RegisterGlobalFilters(GlobalFilters.Filters);

RegisterRoutes(RouteTable.Routes);

//读取日志  如果使用log4net,应用程序一开始的时候,都要进行初始化配置

log4net.Config.XmlConfigurator.Configure();

}

4.我们可以写一个类,定义一个静态方法,这个方法将可以将我们的错误消息进行输出。因为不仅仅一个地方需要,所以我们把它定义为了静态方法。

System;

System.Collections.Generic;

System.Linq;

System.Text;

System.Threading.Tasks;

Common.Logging;

namespace HWH.OADemo.Common

{

public  class LogHelper

{

public static void WriteLog(string txt)

{

ILog log = LogManager.GetLogger("log4netlogger");

log.Error(txt);

}

}

}

5.MVC为我们提供了一种全局过滤机制,其中有一种过滤器叫做异常过滤器,当项目中出现异常的时候执行异常处理器中的代码。

  为了做到不修改源代码,我们可以自定义一个类,使这个类继承自HandleErrorAttribute这个类,并重写其内部方法。这个方法内部代码的作用

  就是处理异常,将异常信息记录日志,让当前请求跳转到错误页面。

System;

System.Collections.Generic;

System.Linq;

System.Web;

System.Web.Mvc;

HWH.OADemo.UI.Models

{

MyExceptionFileAttribute:HandleErrorAttribute

{

OnException(ExceptionContext filterContext)

{

OnException(filterContext);

//处理错误消息,将其跳转到一个页面

Common.LogHelper.WriteLog(filterContext.Exception.ToString());

//页面跳转到错误页面

filterContext.HttpContext.Response.Redirect("/Error.html");

}

}

}

6.由于全局都需要进行异常的处理,我们需要在Global.asax的RegisterGlobalFilters方法中注册我们自己的异常处理过滤器。

RegisterGlobalFilters(GlobalFilterCollection filters)

{

filters.Add(MyExceptionFileAttribute());

}

  操作完毕,在项目出现异常的时候,我们就很清楚的查看错误信息了。

版权说明:本站原创文章,由万象互联SEO优化发表.
本文地址:https://www.hulian.top/zixun/post/5950.html
在线咨询
  • 在线时间
  • 8:00-21:00