log4net捕获web api的所有控制器操作错误

时间:2015-01-05 13:26:46

标签: c# asp.net-web-api log4net

我目前正在实施log4net以捕获web api控制器的异常。

我想知道如何在控制器内的任何操作中捕获所有错误?

我不想理想地完成每个动作并添加try catch如果可以帮助它?

2 个答案:

答案 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作为属性添加到要记录的方法中。