在高并发场景下,执行到日志代码时会先把json序列化执行一次,即使系统日志级别为debug,info级别的日志不输出但也要做一次序列化转化,耗性能。
常用的日志优化有两种:
-
1.开启异步日志配置(ape-frame中使用)
-
2.使用isInfoEnabled方法判断当前要输出的日志级别(info)与系统日志级别是否一致(是否要输出),不需要输出的就不执行日志操作(不进行序列号操作)
@PostMapping("/add")
public Result<Boolean> add(@RequestBody SubjectCategoryDto subjectCategoryDto) {
try {
//高并发下,会先把json序列号执行一次,即使系统日志级别为debug,info级别的日志不输出但也要做一次序列化转化,耗性能
if(log.isInfoEnabled()) { //判断系统日志级别是否为info,返回值true,再执行日志操作。
log.info("subjectCategoryDto:{}", JSON.toJSONString(subjectCategoryDto));
}
SubjectCategoryBO subjectCategoryBO = SubjectCategoryDtoConvert.INSTANCE.categoryDtoToBo(subjectCategoryDto);
subjectCategoryDomainService.add(subjectCategoryBO);
return Result.ok(true);
} catch (Exception e) {
log.info("");
return Result.fail();
}
}