log4net的全局异常的配置
2016-08-09 18:11
281 查看
1、首先使用nuget,为项目添加log4net
2、配置log4net
(1)App_Start文件目录下,新增Log4netRegister.cs文件:public class Log4netRegister
{
public static void Register()
{
var path = HttpContext.Current.Server.MapPath("~/Log4net/Log4net.config");
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(path));
}
}
(2)根据在相应目录添加,log4net..config文件。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<log4net>
<root>
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<!-- 日志记录路径,此处为相对路径,即站点根目录 -->
<file value="Log4net/Log4netFile.txt" />
<!-- 日志记录方式,此处为追加模式 -->
<appendToFile value="true" />
<!-- 日志文件滚动模式,此处定义为复杂模式 -->
<rollingStyle value="Composite" />
<!-- 日志文件名规则,结合上一点配合使用,最终日志文件为logs\ERROR\2013\201309\20130927.log -->
<datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.log'" />
<!-- 如下参数可直接使用,就不多做阐述,主要是上面的参数,其他教程没有 -->
<staticLogFileName value="false"/>
<maxSizeRollBackups value="100" />
<maximumFileSize value="10MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
<filter typ
4000
e="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender>
</log4net>
</configuration>
3、App_Start文件目录下,新增WebApiExceptionFilterAttribute类,用来重写ExceptionFilterAttribute的OnException方法:
public class WebApiExceptionFilterAttribute : ExceptionFilterAttribute{
//重写基类的异常处理方法
private ILog log = LogManager.GetLogger("BookingWebApi");
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
//1.异常日志记录(正式项目里面一般是用log4net记录异常日志)
log.Error(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "——" +
actionExecutedContext.Exception.GetType().ToString() + ":" + actionExecutedContext.Exception.Message + "——堆栈信息:" +
actionExecutedContext.Exception.StackTrace);
//2.返回调用方具体的异常信息
if (actionExecutedContext.Exception is NotImplementedException)
{
actionExecutedContext.Response = new HttpResponseMessage(HttpStatusCode.NotImplemented);
}
else if (actionExecutedContext.Exception is TimeoutException)
{
actionExecutedContext.Response = new HttpResponseMessage(HttpStatusCode.RequestTimeout);
}
//.....这里可以根据项目需要返回到客户端特定的状态码。如果找不到相应的异常,统一返回服务端错误500
else
{
actionExecutedContext.Response = new HttpResponseMessage(HttpStatusCode.InternalServerError);
}
base.OnException(actionExecutedContext);
}
4、在WebApiConfig中添加filter处理
5、查看效果:
故意写错如下:即可在相应文件下看到,我们的异常信息:
相关文章推荐
- log4net 高级运用之:在页面级捕获可预见的异常,在全局应用程序类Global.asax中捕获未知的异常(更新log4net的样式和配置)
- asp.net mvc 3 配置全局异常处理 Web.config中设置CustomError
- 在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常
- springMvc拦截器,全局异常配置,cookie保存用户登录信息
- Struts08---全局结果和全局异常的配置
- Log4Net在MVC下的配置以及运用线程队列记录异常信息
- struts-config.xml中配置全局异常处理:global-exceptions元素
- springmvc全局异常处理器的配置
- 在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常
- ASP.NET全局错误处理和异常日志记录以及IIS配置自定义错误页面
- SpringMvc全局异常处理器配置
- Spring 3.1.1使用Mvc配置全局日期转换器,处理日期转换异常
- 在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常
- 在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常
- SpringMVC配置全局日期转换器,处理日期转换异常
- spring上传文件并限制大小配置以及全局异常处理
- asp.net mvc 3 配置全局异常处理 Web.config中设置CustomError
- 在C#代码中应用Log4Net在Winform、Web和WPF中捕获全局异常
- SpringMVC配置全局日期转换器,处理日期转换异常
- Struts08---全局结果和全局异常的配置