学习篇:Log4Net之我用

标题那么牛逼干嘛,Log4Net又不是我写的。

我再MVC3的项目中用到了Log4Net。我总结了下,使用步骤。

1.当然,第三方组件,首先需要来引用下log4net.dll组件了。

2.就是大堆大堆的配置文件:感兴趣的朋友可以细细品味下。(注意,要写在最前面,最前面)

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>
    <!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
    <!-- Set root logger level to ERROR and its appenders -->
    <root>
      <level value="ALL"/>
      <appender-ref ref="SysAppender"/>
    </root>
    <!-- Print only messages of level DEBUG or above in the packages -->
    <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>

  

3.再Global.asax配置文件中的Application_Start()方法 加入 log4net.Config.XmlConfigurator.Configure();//处理Log4Net配置... ,加在这个方法里,是因为全局捕获异常,要在网站一开始就要开启,所以,这里是最适合的地方了。

4.我再Common类库中写了一个Log4NetHelper静态类(方便使用,维护,不用到捕获异常就声明一次,麻烦死了。)

public static class Log4NetHelper
    {
        public static void WriteLog(string strText)
        {
            ILog log = log4net.LogManager.GetLogger("GiantLog");
            log.Error(strText);
        }
    }

5.写一个MyExceptionFilterAttribute类,继承HandleErrorAttribute类(它是微软提供的捕获异常的过滤器类),然后重写了OnException()方法。

 public override void OnException(ExceptionContext filterContext)
        {
            base.OnException(filterContext);
            //将错误信息记录下来
            string strException=filterContext.Exception.ToString();

            Common.Log4NetHelper.WriteLog(strException);

            filterContext.HttpContext.Response.Redirect("/Error.htm");
        }

OK了,大功告成了。。。可以用 这个来测试下。

        public ActionResult Error()
        {
            int i = 0;
            int y = 444 / i;
            return Content("ok");
        }

O了.....这样就可以记录错误日志了.....

posted @ 2012-11-15 00:55  2月18号  阅读(579)  评论(0编辑  收藏  举报