问题背景:在高频日志调用场景中,直接使用 LOGGER.debug 时,即使日志级别高于 DEBUG,会频繁执行日志里的工具类方法(如 JsonUtils.toJson()),导致不必要的性能损耗。
- 在没有开启 debug 级别的时候都会执行
JsonUtils.toJson
方法,如:
// 1:无条件直接调用
LOGGER.debug("调用功能号:{},返回参数:{}", pathApiCode, JsonUtils.toJson(serviceResponse));
// 2:有条件检查
if (LOGGER.isDebugEnabled()) {LOGGER.debug("ans: api={} ans body:{}", pathApiCode, JsonUtils.toJson(serviceResponse));
}
结论:
- 除了使用
LOGGER.isDebugEnabled()
,还有LOGGER.isInfoEnabled()
等其他日志级别判断,提前检测日志级别,可以避免不必要的日志打印和性能损耗