好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

MVC下Log4Net的配置和使用

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= "  &quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;  "  />
      <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= "  &#13;&#10;----------------------header--------------------------&#13;&#10;  "  />
        <param name= "  Footer  "  value= "  &#13;&#10;----------------------footer--------------------------&#13;&#10;  "  />
      </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的配置和使用的详细内容...

  阅读:45次