Я использую официальный aws-lambda-java-log4j2 , предложил здесь в java-лямбде. Я заметил, что неперехваченные исключения не регистрируются с помощью корневого регистратора. Например, эта лямбда-запись регистрирует «обработчик» с log4j2, но не сгенерированным исключением:
private static final logger = LogManager.getLogger();
public void handler() {
log.info("handler");
throw new RuntimeException("error")
}
Журналы для вызова этой функции включают информационное сообщение log4j2, но исключение регистрируется просто, без requesttid, отметки времени, или ERROR
маркер.
2019-10-07 11:39:02 43db1f36-0570-4b58-adc6-5c92ea62a862 INFO Example - handler
java.lang.RuntimeException: error
at Test.main(Test.java:3)
Труднее найти исключения в журналах, потому что вы не можете выполнить grep для идентификатора запроса или ERROR
.
Есть ли общий шаблон длясоздавать журналы с помощью корневого регистратора log4j2 в lambda?
Я не хочу оборачивать свои обработчики try-catch-log-rethrow.
try {
...
} catch (Throwable t) {
log.fatal(t);
throw t;
}