捕获异常
1.webform的golbal中有一个事件专门捕获异常2.asp.net mvc中使用filter(asp.net mvc自带)过滤器捕获异常,具体方法如下
2.1自定义异常捕获过滤器,使之继承HandleErrorAttribute(filter中的异常过滤器),并重写OnException方法
public class MyHandleErrorAttribute:HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext);
//异常处理记录,即写日志,并发(多个线程同时往一个文件中写东西,会报错)处理在LogHelper中实现
LogHelper.WriteLog(filterContext.Exception.StackTrace);
//跳转到错误页面
filterContext.HttpContext.Response.Redirect("~/Error.html");
}
}
2.2注册自定义的过滤器
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//filters.Add(new HandleErrorAttribute());
filters.Add(new MyHandleErrorAttribute());
}
}
找到该类的方法:找到Global中Application_Start方法中的FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters),右击转到定义
log4net使用
1.引入dll2.在config文件中配置
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
</configuration>
<log4net>
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
<!-- Set root logger level to ERROR and its appenders -->
<root>
<level value="ERROR"/>
<appender-ref ref="SysAppender"/>
</root>
<!-- Print only messages of level DEBUG or above in the packages -->
<logger name="WebLogger">
<level value="ERROR"/>
</logger>
<!-- 该appender节意思为以文本的方式记录日志文件 -->
<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文件的Application_Start方法中添加以下代码
log4net.Config.XmlConfigurator.Configure();//读取了配置文件中关于Log4Net配置信息.
4.写日志
在需要写日志的地方加入(需要处理并发问题,具体见LogHelper.cs)
ILog log = LogManager.GetLogger("MyLog");//MyLog只是日志的名字
log.Error(filterContext);//ex.ToString()