高并发场景下的日志优化

197 阅读1分钟

在高并发场景下,执行到日志代码时会先把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();
    }
}