2

我希望我的 Restlet 应用程序记录任何生成 500 系列 HTTP 错误的资源的堆栈跟踪(使用上下文的记录器)。据我所知,这不是默认行为。

换句话说,我不希望我的 Resource 类在表示和 acceptRepresentation 方法中有任何记录器代码——它们只是抛出一个 ResourceException。我希望在所有资源实例中以集中方式处理日志记录逻辑。

我可以想出几种骇人听闻的方法(例如,从处理日志记录逻辑的 Resource 子类继承),但看起来这应该是框架内置的东西。

我错过了什么?

4

2 回答 2

3

看看StatusService

处理错误状态的服务。如果在您的应用程序或 Restlet 代码中抛出异常,如果启用,它将被此服务拦截。当捕获到异常或错误时,首先调用 getStatus(Throwable, Request, Response) 方法来获取要在响应上设置的状态。[...]

我上个月才发现这一点,它让我能够真正压缩很多错误处理代码,并确保异常得到处理,并且得到统一处理。

于 2010-01-19T01:24:14.803 回答
1

您也许可以使用过滤器来执行此操作;在 afterHandle() 中它可以检查状态代码,然后尝试记录异常。我不确定过滤器是否可以使用例外。

于 2010-01-19T14:04:16.883 回答