web-dev-qa-db-ja.com

ロガーでスタックトレースを取得する

Log4jを使用して、例外をログに記録しています。 e.printStackTrace();で取得したものをすべて記録したい
私のコードは次のようになります。

_try {

} catch(Exception e) {
    log.error("Exception is:::" + e);
}
_

ただし、ログに記録されるコンテンツは次のようになります。

_2012-02-02 12:47:03,227 ERROR [com.api.bg.sample] - Exception in unTech:::[Ljava.lang.StackTraceElement;@6ed322
2012-02-02 12:47:03,309 ERROR [com.api.bg.sample] - Exception is :::Java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
_

しかし、私が期待するコンテンツは次のとおりです。

_Java.io.IOException: Not in GZIP format
at Java.util.Zip.GZIPInputStream.readHeader(Unknown Source)
at Java.util.Zip.GZIPInputStream.<init>(Unknown Source)
at Java.util.Zip.GZIPInputStream.<init>(Unknown Source)
at com.api.bg.sample.unGZIP(sample.Java:191)
at com.api.bg.sample.main(sample.Java:69)
_

e.getMessage()e.getStackTrace();を試しましたが、完全なスタックトレースを取得できません。助言がありますか?

42
JNPW

2つの引数形式を使用する必要があります

log.error("my logging message", exception)

詳細については、 http://www.devdaily.com/blog/post/Java/how-print-exception-stack-trace-using-log4j-commons を参照してください。

66
Brian Tarbox

ロギングステートメントを次のように変更します。

log.error("Exception is: ", e);
7
Jonathan

フルタイムのスタックトレースの出力を妨げるのは実際にはlog4jです。ただし、エラーメソッドの2番目のパラメーターとして例外を設定する必要があります。

1
Kurt Du Bois
log.log(LEVEL.ERROR,e.getMessage(),e);
0
Mansa