Регистратор печатает только сообщение журнала, а не исключение - PullRequest
0 голосов
/ 27 мая 2019
try {
   // some code
}
catch (Exception e) {
   Logger.log(Level.WARN, "Unable to complete the job. ID: " + id, e);
}

Итак, очевидно, что разработчик ожидает, что если что-то пойдет не так, он запишет исключение (тип исключения и отслеживание стека)

Вот распечатка журнала, которую я получил

[27 May 2019 13:30:07][http-nio-8080-exec-13][WARN]: Unable to complete the job. ID: 123457890

Вот конфигурация Log4j

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=debug.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d{dd MMM yyyy HH:mm:ss}][%t][%p]: %m%n

Я знаю способы получения сведений об исключении, я хочу понять это поведение.Как это произошло?Игнорирует ли регистратор переданные параметры?

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Уровень ОШИБКИ используется для регистрации трассировки стека ошибки в файле журнала.

Попробуйте использовать.

    try {
        // some code
    } catch (Exception e) {
       Logger.log(Level.ERROR, "Unable to complete the job. ID: " + id, e);
    }

если это все еще не работает, пожалуйста, поделитесь своей библиотекой журналов. Проверим с этим.

0 голосов
/ 27 мая 2019

Единственное, что я могу предположить, это то, что это происходит из-за оптимизации горячей точки :

Компилятор в виртуальной машине сервера теперь обеспечивает правильные обратные трассировки стека для всех «холодных» встроенныхисключения.Для повышения производительности, когда такое исключение выдается несколько раз, метод может быть перекомпилирован.После перекомпиляции компилятор может выбрать более быструю тактику с использованием предварительно выделенных исключений, которые не обеспечивают трассировку стека.Чтобы полностью отключить использование предварительно выделенных исключений, используйте этот новый флаг: -XX: -OmitStackTraceInFastThrow.

Этот ответ был заимствован из этого ответа на связанный вопрос:

log4jне печатать трассировку стека для исключений

...