5

Java アプリケーションでコモンズ ロギングを使用しており、スタック トレースから例外をログに記録したいと考えています。

 catch( IOException exception ) {
    logger.error( "IOException Occured :", exception.fillInStackTrace() ); 

       //Print the entire stack trace to log file.
      throw new AsExceptionUtl( APPMessageHelper.getMessage( APPMessageConstants.ERROR_FailedLoadFile, documentPath ) );
   }

これは正しい方法ですか?そして、スタックトレースをログに出力しますか?

4

2 に答える 2

4

例外をログに記録したい場合は、単に使用してください

logger.error("IOException Occured :", exception); 

スタック トレースが表示されるかどうかは、基になるロギングの実装とその構成方法によって異なります。私の知る限り、ほとんどまたはすべての実装では、デフォルトで例外のスタック トレースが表示されます。

于 2012-12-14T12:19:04.443 に答える
2

Apacheコモンズロギングの説明:これに関するドキュメントはインターネット上にはあまりありません。これはあなたの利益のための小さな記事です:

Javaコードにメッセージを記録するには、2つのクラスをソースコードにインポートする必要があります。

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

次に、ログを作成するには、次の2つの方法のいずれかでクラスに属性を作成します。

   private Log m_log = LogFactory.getLog(MyClass.class);

また

   private Log m_log = LogFactory.getLog("MyClassLogger");

最初のオプションは、クラスの汎用ロガーを作成することです。これは、デフォルトのロギングオプションによって制御されます。2番目のオプションは、「MyClassLogger」という名前の特定のロガーを作成することです。これは、デフォルトに個​​別に制御できます。ロギングを使用する他のサードパーティのソースコードを使用しているが、そのソースコードからのデバッグやその他の情報を表示したくない場合は、これを行うことができます。ロガーの使用は非常に簡単です。優先度に対応するメソッドを呼び出すことにより、ログメッセージを送信できます。

m_log.fatal(Object message);
m_log.fatal(Object message, Throwable t);
m_log.error(Object message);
m_log.error(Object message, Throwable t);
m_log.warn(Object message);
m_log.warn(Object message, Throwable t);
m_log.info(Object message);
m_log.info(Object message, Throwable t);
m_log.debug(Object message);
m_log.debug(Object message, Throwable t);
m_log.trace(Object message);
m_log.trace(Object message, Throwable t);

これらのメソッドは、優先度の高いものから低いものの順にリストされています。コモンズロギングは、デフォルトで、INFO以降からのすべてのメッセージを表示するように設定されています。ご覧のとおり、各メソッドは、例外などのThrowableタイプを送信できるメソッドでオーバーロードされています。これは非常に便利です。メッセージをログに記録するために必要なのはこれだけです。

あなたの場合、あなたはただ使う必要があります:

  logger.error("IOException Occured :", exception); 

ここでの例外オブジェクトはスローされた例外とともにログに記録されるため、stackTraceを呼び出す必要はありません。

于 2012-12-14T12:28:52.247 に答える