在记录器中获取堆栈跟踪

JNP*_*NPW 44 java log4j stack-trace

我正在使用log4j来记录我的异常.我想记录我得到的任何内容e.printStackTrace();
我的代码如下所示:

try {

} catch(Exception e) {
    log.error("Exception is:::" + e);
}
Run Code Online (Sandbox Code Playgroud)

但我记录的内容如下所示:

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
Run Code Online (Sandbox Code Playgroud)

但我期望的内容是:

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)
Run Code Online (Sandbox Code Playgroud)

我尝试过e.getMessage(),e.getStackTrace();但是我没有得到完整的堆栈跟踪.有什么建议?

Bri*_*box 67

你必须使用两个参数形式

log.error("my logging message", exception)
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅http://www.devdaily.com/blog/post/java/how-print-exception-stack-trace-using-log4j-commons.


Jon*_*han 7

将日志记录语句更改为:

log.error("Exception is: ", e);
Run Code Online (Sandbox Code Playgroud)