MVC下Log4Net的配置和使用
MVC下Log4Net的配置和使用
对于网站来讲,我们不能将异常信息显示给用户, Log4Net用来记录日志,可以将程序运行过程中的信息输出到文件,数据库中等地方,可以通过日志查看系统的运行过程,发现系统的问题。log4net的使用步骤如下:
1.添加对log4net.dll的引用。
2.在配置文件中添加配置。如下是在web.config的配置:
在configSections下节点配置为:
<!--日志的配置--> <section name= " log4net " type= " log4net.Config.Log4NetConfigurationSectionHandler,log4Net " />
配置为:
<!--日志的配置开始--> <log4net> <root> <level value= " ALL " /> <appender- ref ref = " SysAppender " /> </root> <logger name= " WebLogger " > <!--配置日志的级别,低于此级别的就不写到日志里面去--> <level value= " DEBUG " /> </logger> <appender name= " SysAppender " type= " log4net.Appender.RollingFileAppender,log4net " > <param name= " File " value= " App_Data/ " /> <param name= " AppendToFile " value= " true " /> <param name= " RollingStyle " value= " Date " /> <param name= " DatePattern " value= " "Logs_"yyyyMMdd".txt" " /> <param name= " StaticLogFileName " value= " false " /> <layout type= " log4net.Layout.PatternLayout,log4net " > <param name= " ConversionPattern " value= " %d [%t] %-5p %c - %m%n " /> <param name= " Header " value= " ----------------------header-------------------------- " /> <param name= " Footer " value= " ----------------------footer-------------------------- " /> </layout> </appender> <appender name= " consoleApp " type= " log4net.Appender.ConsoleAppender,log4net " > <!--日志的格式--> <layout type= " log4net.Layout.PatternLayout,log4net " > <param name= " ConversionPattern " value= " %d [%t] %-5p %c - %m%n " /> </layout> </appender> </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.我们可以写一个类,定义一个静态方法,这个方法将可以将我们的错误消息进行输出。因为不仅仅一个地方需要,所以我们把它定义为了静态方法。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using 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这个类,并重写其内部方法。这个方法内部代码的作用
就是处理异常,将异常信息记录日志,让当前请求跳转到错误页面。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace HWH.OADemo.UI.Models { public class MyExceptionFileAttribute:HandleErrorAttribute { public override void OnException(ExceptionContext filterContext) { base .OnException(filterContext); // 处理错误消息,将其跳转到一个页面 Common.LogHelper.WriteLog(filterContext.Exception.ToString()); // 页面跳转到错误页面 filterContext.HttpContext.Response.Redirect( " /Error.html " ); } } }
6.由于全局都需要进行异常的处理,我们需要在Global.asax的RegisterGlobalFilters方法中注册我们自己的异常处理过滤器。
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add( new MyExceptionFileAttribute()); }
操作完毕,在项目出现异常的时候,我们就很清楚的查看错误信息了。
分类: MVC
作者: Leo_wl
出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于MVC下Log4Net的配置和使用的详细内容...