MVC 5 下,应用log4net收集异常信息

1、安装log4net。

  首先在VS中通过nuget安装logenet,我用的是VS2013,截屏如下:

  

2、修改web.config

  configSections节点下新增

<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>

  configuration节点下新增

<!--日志的配置开始-->
  <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="logs/" />
      <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;----------------------错误信息开始--------------------------&#13;&#10;" />
        <param name="Footer" value="&#13;&#10;----------------------错误信息结束--------------------------&#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>
  <!--日志的配置结束-->

3、LogHelper类(需引用log4net.dll)

public class LogHelper
    {
        public static void Log(string msg)
        {
            ILog log = LogManager.GetLogger("log4netlogger");
            log.Error(msg);
        }
    }

4、继承HandleErrorAttribute的类,加入log4net的处理语句。

public class CustomExceptionFileAttribute : HandleErrorAttribute
    {
        public override void OnException(ExceptionContext filterContext)
        {
            base.OnException(filterContext);
            //处理错误消息,将其跳转到一个页面
            LogHelper.Log(filterContext.Exception.ToString());
            //页面跳转到错误页面
            //filterContext.HttpContext.Response.Redirect("/Error.html");
        }
    }

5、修改App_Start/FilterConfig.cs文件

public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            //filters.Add(new HandleErrorAttribute());
            filters.Add(new CustomExceptionFileAttribute());
        }
    }

6、Global.asax.cs中加载log4net的配置信息。

protected void Application_Start()
        {
            //log4net.Config.XmlConfigurator.Configure();
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            log4net.Config.XmlConfigurator.Configure(new FileInfo(Server.MapPath("~/Web.config")));
        }

  其中log4net.Config.XmlConfigurator.Configure();是网上找的代码,实际测试不能生成日志。

posted @ 2016-03-29 14:42  追逐者——Eagle  阅读(249)  评论(0编辑  收藏  举报