mybatis打印sql日志没有格式问题

起因:

项目上配置了mybatis打印出sql的日志,但是打印出的日志没有格式信息,无法附带traceId等等,看不出任何的上下文

在这里插入图片描述
很明显,sql日志的格式跟其他的不一样,这样即使其他日志加上了traceId,sql日志也没有,咋办嘞?

解决办法:

经过一番吭哧吭哧的google,找到了问题原因。原来mybatis是通过这个配置来开始日志打印并决定日志打印格式的

看到最后一行没 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志

mybatis-plus:
  # 如果是放在src/main/java目录下 classpath:/com/yourpackage/*/mapper/*Mapper.xml
  # 如果是放在resource目录 classpath:/mapper/*Mapper.xml
  mapper-locations: classpath*:/com/g3/ccdop/*/mapper/xml/*Mapper.xml
  #刷新mapper 调试神器
  #refresh-mapper: true
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.g3.ccdop
  global-config:
    #驼峰下划线转换
    db-column-underline: true
    #sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
    #自定义填充策略接口实现
    #meta-object-handler: com.baomidou.springboot.MyMetaObjectHandler
    db-config:
      #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
      id-type: 3
      #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
      field-strategy: 2
      #mp2.3+ 全局表前缀 mp_
      #table-prefix: mp_
      #数据库大写下划线转换
      #capital-mode: true
      # Sequence序列接口实现类配置
      #key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator
      #逻辑删除配置
      logic-delete-value: UNIX_TIMESTAMP()
      logic-not-delete-value: 0
  configuration:
    #配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as: select user_id as userId) 
    map-underscore-to-camel-case: true
    cache-enabled: false
    #配置JdbcTypeForNull, oracle数据库必须配置
    jdbc-type-for-null: 'null'
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志

就是最后一行这个类,决定了日志打印的格式。那好,我们点开这个类看一眼

public class StdOutImpl implements Log {

  public StdOutImpl(String clazz) {
    // Do Nothing
  }

  @Override
  public boolean isDebugEnabled() {
    return true;
  }

  @Override
  public boolean isTraceEnabled() {
    return true;
  }

  @Override
  public void error(String s, Throwable e) {
    System.err.println(s);
    e.printStackTrace(System.err);
  }

  @Override
  public void error(String s) {
    System.err.println(s);
  }

  @Override
  public void debug(String s) {
    System.out.println(s);
  }

  @Override
  public void trace(String s) {
    System.out.println(s);
  }

  @Override
  public void warn(String s) {
    System.out.println(s);
  }
}

哦,好家伙,它是直接用的System打印的,怪不得没有格式。那好,我给他替换下,唉,正好,这里有个Slf4jImpl类

在这里插入图片描述
点击去看一眼,恩,这就是我们要的打印方式。
在这里插入图片描述
好,替换一下,把 ’ mybatis-plus.configuration.log-impl ’ 改为:org.apache.ibatis.logging.slf4j.Slf4jImpl
然后,我们再看日志打印。看,现在就是按照格式打印了。好了,接下来就发挥聪明才智(各种抄袭)把traceId给加上吧。

在这里插入图片描述

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值