标签:
第一步:把log4net.dll 编译成Framework 4.0
第二步:找到项目的Properties下的AssemblyInfo。在最下面添加:[assembly: log4net.Config.XmlConfigurator(Watch = true)]。
第三步:Web.config
<configuration> <configSections> <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> </configSections> <log4net> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="logs/"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyy-MM-dd.TXT"/> <staticLogFileName value="false"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date ThreadID:[%thread] Log Level:%-5level Class:%logger Desp:%message%newline"/> </layout> </appender> <root> <appender-ref ref="LogFileAppender"/> </root> </log4net> </cconfiguration>
第四步:Global.asax Applicatin_Start方法内添加:ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
第五步:LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Error("logtest");
其它:全局性的 ERROR HANDLER
[ASP.NET MVC] Error Handling(3) – 全局性的 Error Handler
现在来看怎么让 HandleErrorAttribute 应用到整个网站?
只要定义全局性的 Error Handler 就行了。
在 /App_Start/FilterConfig.cs 里,里面会有一个 RegisterGlobalFilters() Method。
可以看到里面已经有一行 filters.Add(new HandleErrorAttribute()); 。
这行是预设的,意思就是他会捕捉到所有 Error,如果你在第一篇文章里,把这一行批注掉,那他无法捕捉 Error,最后就没办法显示我们自定义的 Error Page。
接着我们把第二章的程序改写在这边。
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute { ExceptionType = typeof(System.Data.DataException), View = "DatabaseError" }); filters.Add(new HandleErrorAttribute()); }
这边要注意的是,他执行的顺序是由上而下的,当上面的 filter 无法捕捉错误 时,才会继续往下执行,而因为我们无法定义所有的错误,所以我们并不会把它默认的那一行程序删除,而是把我们的 filter 加在上面,这样才能确保抓到所有的错误。
而你也可以手动指定它们执行的顺序,只要加上第二个参数就行了。
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute { ExceptionType = typeof(System.Data.DataException), View = "DatabaseError" }, 1); filters.Add(new HandleErrorAttribute(), 2); }
上面虽然写能抓到所有错误,但其实 HandleErrorAttribute 只能抓到 HTTP 500 系列的错误,如果像是 404 这种的就抓不到了,需要再另外定义。
现在我们把 web.config 的
<customErrors mode="On">
</customErrors>
改成
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
<error statusCode="404" redirect="~/error/notfound"></error>
</customErrors>
标签:
原文地址:http://www.cnblogs.com/fuyu-blog/p/4435426.html