我希望我的Restlet应用程序记录生成500系列HTTP错误的任何资源的堆栈跟踪(使用Context的Logger)。据我所知,这不是默认行为。
换句话说,我不希望我的Resource类在represent和acceptRepresentation方法中都有任何记录器代码 - 它们只是抛出一个ResourceException。我希望在所有Resource实例中集中处理日志记录逻辑。
我可以想到几种执行此操作的hackish方式(例如,从处理日志记录逻辑的Resource子类继承),但看起来这应该是内置于框架中的东西。
我错过了什么?
答案 0 :(得分:3)
处理错误状态的服务。如果在您的应用程序或Restlet代码中抛出异常,则启用此服务将截获该异常。捕获异常或错误时,首先调用getStatus(Throwable,Request,Response)方法以获取要在响应上设置的状态。 [...]
我上个月刚刚发现它,它让我真正压缩了很多我的错误处理代码,并确保正在处理异常,并统一处理。
答案 1 :(得分:1)
您可以使用过滤器来执行此操作;在afterHandle()中它可以检查状态代码,然后尝试记录异常。我不确定过滤器是否可以使用例外。