【发布时间】:2015-01-28 17:49:04
【问题描述】:
我的问题应该很简单,但不幸的是我没有解决它。
基本上,我有一些由 OWIN 托管并部署在 Azure 上的 Web API 控制器。
我确实需要跟踪每个中间件中发生的异常(例如 OAuthAuthorizationServerProvider 或 SignalR Persistent Connections),但我绝对不知道如何去实现它。
- 我尝试了 Elmah,但由于缺少 HttpContext,它似乎无法与 OWIN 一起正常工作。
- 我尝试使用 log4net,但我只能使用自定义 ExceptionFilterAttribute 记录由 Web API 控制器引发的异常。其他被忽略。
- 我尝试定义一个自定义 LoggerFactory 并在 Startup 中分配它,使用
app.SetLoggerFactory(new MyLoggerFactory()), 但其他中间件抛出的异常不会被记录。 - 我试图至少向客户端发送一条有意义的错误消息,但尽管有
<customErrors mode="Off"/>和<deployment retail="false"/>,Azure 拒绝返回除{"message":"an error has occurred"}之外的任何内容。我尝试了Azure 网站和Azure 云服务。 - 我看到了一些 应该 与 OWIN 一起使用的云替代方案,例如 Elmah.io 或 Raygun.io,但我不需要它们的云功能,而且绝对不值得每年支付数百美元只是为了记录一些异常。
记录我的应用程序抛出的任何可能的异常的最佳方法应该是什么?
感谢您的帮助
【问题讨论】:
标签: azure logging exception-handling owin middleware