日志框架由logback调整为log4j2。
log4j2特性
引入原因
1、log4j2的性能,无论是在同步还是异步情况下都优于logback。目前我们只用到同步模式,后续随着日志量/用户等上升,可以考虑调整为异步模式;
2、log4j2支持“惰性”打日志(lazy logging)。在打印内容较大时,可以通过调整为INFO或者ERROR完全屏蔽代码的执行;
例如:
logger.debug("入参报文:{}",JSON.toJSONString(policyDTO));
// 上述内容中的policyDTO可能内容较大,调试过程中,我们希望打印内容,但是生产过程中,我们希望JSON.toJSONString(policyDTO)完全不执行。
// 在log4j和logback中,如果想要完全不执行,我们需要改造成如下代码:
if(logger.isDebugEnabled()){
logger.debug("入参报文:{}",JSON.toJSONString(policyDTO));
}
// 如果每个日志输出都要做以上判断,代码相当冗余。而log4j2支持惰性打日志,相对简洁明了。如下:
logger.debug("入参报文:{}",() -> JSON.toJSONString(policyDTO));
使用方法
// 在需要打日志的类上添加@Log4j2注解即可
@Log4j2
public class CommonServiceApiRun {
public static void main(String[] args) {
//设置时区
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
SpringApplication.run(CommonServiceApiRun.class, args);
// 按之前的方式,直接用log对象输出即可
log.info("服务启动成功!Spring Boot版本:[{}] ,Spring版本:[{}] ", SpringBootVersion.getVersion(), SpringVersion.getVersion());
}
}