Получение трассировки стека в логгере - PullRequest
40 голосов
/ 02 февраля 2012

Я использую 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();, однако я не получаю полную трассировку стека.Есть предложения?

Ответы [ 4 ]

64 голосов
/ 02 февраля 2012

Вы должны использовать форму с двумя аргументами

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

Подробнее см. http://www.devdaily.com/blog/post/java/how-print-exception-stack-trace-using-log4j-commons.

7 голосов
/ 02 февраля 2012

Измените свое заявление о регистрации на:

log.error("Exception is: ", e);
1 голос
/ 02 февраля 2012

Это действительно log4j, который предотвращает печать полной трассировки стека.Однако следует установить исключение в качестве второго параметра для метода ошибки.

0 голосов
/ 21 июня 2018
log.log(LEVEL.ERROR,e.getMessage(),e);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...