我在Java lambda中使用aws-lambda-java-log4j2的官方建议,here。我注意到未捕获的异常未使用根记录器记录。例如,此lambda使用log4j2记录“处理程序”,但未引发异常:
private static final logger = LogManager.getLogger();
public void handler() {
log.info("handler");
throw new RuntimeException("error")
}
用于调用此功能的日志包括log4j2信息消息,但是该异常是明文记录的,没有requestid,timestamp或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输入请求ID或ERROR
。
在lambda中是否有使用log4j2根记录器发出日志的通用模式?
我不想用try-catch-log-rethrow包装处理程序。
try {
...
} catch (Throwable t) {
log.fatal(t);
throw t;
}