Рестлет: трассировка стека журналов для всех 500 ошибок - PullRequest
2 голосов
/ 19 января 2010

Я бы хотел, чтобы мое приложение Restlet регистрировало трассировку стека для любого ресурса, который генерирует ошибку HTTP серии 500 (с использованием регистратора контекста). Насколько я могу судить, это не стандартное поведение.

Другими словами, я не хочу, чтобы у моих классов Resource вообще был какой-либо код регистратора в методах представления и acceptRepresentation - они просто генерируют исключение ResourceException. Я хочу, чтобы логика логирования обрабатывалась централизованно во всех экземплярах ресурса.

Я могу подумать о нескольких хакерских способах сделать это (например, наследовать от подкласса Resource, который обрабатывает логику регистрации), но кажется, что это то, что должно быть встроено в платформу. *

Чего мне не хватает?

Ответы [ 2 ]

3 голосов
/ 19 января 2010

Взгляните на StatusService :

Сервис для обработки статусов ошибок. Если в вашем приложении или коде Restlet возникает исключение, оно будет перехвачено этой службой, если оно включено. При обнаружении исключения или ошибки сначала вызывается метод getStatus (Throwable, Request, Response), чтобы получить статус, который вы хотите установить в ответе. [...]

Я только что обнаружил это в прошлом месяце, и это позволило мне действительно сжать большую часть кода обработки ошибок, а также убедиться, что исключения обрабатываются и обрабатываются единообразно.

1 голос
/ 19 января 2010

Вы можете использовать фильтр для этого; в afterHandle () он может проверить код состояния, а затем попытаться зарегистрировать исключение. Я не уверен, что исключения доступны для фильтров.

...