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

浙公网安备 33010602011771号