これが私の設定です:
- WEBAPP:SpringMVCWebアプリケーション
- ライブラリ:WEBAPP内で使用する内部ライブラリ
WEBAPPでは、「ベース」コントローラーで次のように例外ハンドラーを定義しています。
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public final ModelAndView handleException(
final Exception e,
final HttpServletRequest request)
{
// some stuff...
LOG.error(message, e);
// some more stuff...
}
ここで、LOGは、クラスで静的に定義されたlog4jロガーです。
LIBRARY内で、例外をエラーとしてログに記録してから、クライアントに再スローします。この場合、クライアントはWEBAPPです。ご覧のとおり、エラーが発生するたびに、2つのログエントリがあります。1つはLIBRARY用、もう1つはWEBAPP用です。
例外はLIBRARYの外部でスローされる可能性があるため、WEBAPPの例外ハンドラーを削除したくありません。また、500をWEBAPPクライアントに返す前にそれらをログに記録したいと思います。
助言がありますか?