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
我知道获取异常详细信息的方法,我想了解这种行为。这是怎么发生的?记录器会忽略传递的参数吗?
答案 0 :(得分:0)
我唯一的猜测是发生这种情况是由于热点优化
:服务器VM中的编译器现在为所有“冷”内置异常提供正确的堆栈回溯。为了提高性能,当几次抛出此类异常时,可以重新编译该方法。重新编译后,编译器可以使用不提供堆栈跟踪的预分配异常来选择更快的策略。要完全禁止使用预分配的异常,请使用以下新标志:-XX:-OmitStackTraceInFastThrow。
这是从以下相关问题的答案中借来的:
答案 1 :(得分:0)
ERROR级别用于在日志文件中记录错误的堆栈跟踪。
尝试使用。
try {
// some code
} catch (Exception e) {
Logger.log(Level.ERROR, "Unable to complete the job. ID: " + id, e);
}
如果仍然无法使用,请共享您的日志记录库。会检查一下。