0

これが私の設定です:

  • 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クライアントに返す前にそれらをログに記録したいと思います。

助言がありますか?

4

1 に答える 1

0

その場所で何かをする予定がある場合にのみ、例外をキャッチする必要があるというアプローチを取ります。例外をログに記録しても何もしません。ライブラリにログインしないことをお勧めします。ライブラリ内で特別なことをしようとしていないように聞こえるので、例外を通常どおりバブルアップさせます。

于 2013-02-25T18:47:41.193 に答える