Javaで例外をログに記録する?

私は、Javaアプリケーションでコモンズのログを使用しています。スタックトレースから例外をログに記録します。

catch( Exception exception ) {
         logger.error( "FailedCreateActivityFunction Exception Occured : " , exception );
         throw new EngineException( getMessage( ERROR_FailedCreateActivityFunction, FunctionName ), exception );
      }

これは例外を2回スローしますか?はいの場合はそれを修正する方法?

Whats the difference between using it as this way using + exception instead of , exception

logger.error( "FailedCreateActivityFunction Exception Occured : " + exception );
2
nl ru de
の代わりに+例外を使用しての違いは、例外は、Javaの "エラーメッセージを表示することができます(メッセージ、Throwable)
追加された 著者 goravine,

2 答え

いいえ、例外を二度スローしません。このコードはEngineExceptionのみをスローします。

あなたはロギングと例外のスローを避けるべきです。ログとスローは反パターンです。例外処理の詳細は、例外処理用の反パターンを参照してください。

エラーメソッドを実行する2つの方法の違いは次のとおりです。

  • logger.error(String msg、Throwable t) - オブジェクトを渡すので、ロギングフレームワークはより多くの情報を持ち、完全なスタックトレースを表示できます。
  • logger.error(String msg) - Stringを作成し、追加の情報はログフレームワークに渡されません。
4
追加された
このシナリオ + exception または、exception でどのように使用すればよいかを教えてください。そのスタックトレースをロガーにプッシュする他の方法はありますか?
追加された 著者 Debajyoti Das,
一般的には、のように使用するべきです。そして、私が知る限り、良いロギングフレームワークはすべて、スタックトレースをロガーにプッシュします。
追加された 著者 mleczey,

いいえ、それは2回捨てません。

最初のメソッドはあなたのメッセージと例外のスタックトレースを出力します。

第2の方法は、メッセージと例外メッセージ(は、スタックトレースなしでエラーの簡単な説明を返します。

1
追加された