学习篇: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了.....这样就可以记录错误日志了.....