Log4j2
- 打印唯一请求号 log4j2中配置logId唯一标识来标记同一个请求
- 日志打印异常堆栈
log.error("exception",e)
//不需要占位符
日志级别
- WARN 表示可以恢复的问题,无需人工介入。
- ERROR 表示需要人工介入问题。
问题
// 这样的代码如果加上判断,会通过优化直接去除调日志打印
if(LOGGER.isDebugEnabled()){
LOGGER.debug("name {}",user.name());
}
// 这样的代码即使不输出日志,也会调用user.toString()的开销
LOGGER.debug("user:" + user);
// 这样的代码即使不输出日志,也会调用user.name()的开销,当然此开销和isDebugEnabled基本差不多,但是如果调用的方法是耗时方法,需注意
LOGGER.debug("name:{}",user.name());
// 因此日志打印需加判断条件,也可使用lambda化简isDebugEnabled为这种格式 log.debug(() -> "user:" + user)