Log4j - отображать полную информацию об исключениях, включая внутренние исключения - PullRequest
0 голосов
/ 17 января 2020

Наш log4j (свойства ниже) дает нам Exception.getMessage (), но это все. Мне нужно, чтобы он регистрировал трассировку стека и все внутренние исключения, с трассировкой стека для каждого из них.

Как мне это сделать?

log4j.rootLogger=DEBUG, file

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\temp\\JavaEngine.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%x - %m%n

1 Ответ

0 голосов
/ 20 января 2020

Предполагая, что вы используете log4j 1, я не думаю, что с вашей конфигурацией что-то не так.

Я использовал вашу конфигурацию вместе со следующим приложением:

package log4j;

import org.apache.log4j.Logger;

import java.io.IOException;

public class App {
    private static final Logger LOG = Logger.getLogger(App.class);

    private static Throwable nestedThrowable() {
        return new Throwable("Thrown error", new IOException("Some Error"));
    }

    public static void main(String[] args) {
        LOG.error("test error", nestedThrowable());
    }
}

Это привело к следующему выводу:

2020-01-20 15:04:02 ERROR App: - test error
java.lang.Throwable: Thrown error
        at log4j.App.nestedThrowable(App.java:11)
        at log4j.App.main(App.java:15)
Caused by: java.io.IOException: Some Error

Таким образом, я предлагаю убедиться, что Logger API используется правильно, чтобы гарантировать, что Throwable передается в качестве последнего аргумента, например error(Object message, Throwable thrown)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...