我目前正在实施log4net以捕获web api控制器的异常。
我想知道如何在控制器内的任何操作中捕获所有错误?
我不想理想地完成每个动作并添加try catch如果可以帮助它?
答案 0 :(得分:2)
您需要注册IExceptionLogger
e.x。:GlobalConfiguration.Configuration.Services.Add(typeof(IExceptionLogger),new YourWebApiExceptionLogger());
答案 1 :(得分:1)
您可以实现System.Web.Http.Filters.ActionFilterAttribute。在OnActionExecuted中,您可以处理日志记录:
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
if (actionExecutedContext.Response != null)
{
//ok
}
else
{
_logger.ErrorFormat("actionExecutedContext.Response == null will result in 500, unhandled exception"); //Add extra information here
}
}
然后,您可以将此ActionFilter作为属性添加到要记录的方法中。