Регистрируйте исключения обработчика лямбда aws с помощью log4j2, используя aws-lambda-java-log4j2 - PullRequest
1 голос
/ 07 октября 2019

Я использую официальный 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;
}
...