阅读 173

mybatis-plus无法通过logback-spring输出

mybatis-plus可以在控制台打印,却无法通过logback输出

  • 问题描述
    通过官网配置,将mybatis-plus引入spring boot项目中,但是日志只能在控制台中输出,却无法在logback的日志文件中输出
// 具体参考网址 
// https://mp.baomidou.com/guide/faq.html#%E5%90%AF%E5%8A%A8-mybatis-%E6%9C%AC%E8%BA%AB%E7%9A%84-log-%E6%97%A5%E5%BF%97
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  • 解决过程
    1、点击进入StdOutImpl方法中查看,此方法是通过System.out.println打印的,logback在非配置情况下无法输出此内容。
    2、System.out.println在logback打印文件中输出,我查到三种方法
    • 方法一:
    System.setOut(new PrintStream(new File("日志路径")));
    System.out.println();
    
    • 方法二:使用jar包
    <dependency>
         <groupId>uk.org.lidalia</groupId>
         <artifactId>sysout-over-slf4j</artifactId>
         <version>1.0.2</version>
     </dependency>
     web.xml 文件中添加
     <listener>
      <listener-class>uk.org.lidalia.sysoutslf4j.context.SysOutOverSLF4JServletContextListener</listener-class>
     </listener>
    
    • 方法三:spring-boot项目使用nohup命令启动未指定日志文件输出,所有日志均会输出到nohup.out中。可以定时写一个shell脚本,按日期切割nohup.out中内容,弃用logback输出的日志文件
    this_path=$(cd `dirname $0`;pwd)  
    cd $this_path  
    echo $this_path  
    current_date=`date -d "-1 day" "+%Y%m%d"`  
    echo $current_date  
    // 分割出指定字符大小,到新文件中
    split -b +100m -d -a 4 /home/.../nohup.out   /home/.../log/log_${current_date}_  
    // 清空nohup.out,等待下一次分割
    cat /dev/null > nohup.out
    
    以上3种方法都不太适用于我当前的需求,需要换个角度解决这个问题,比如,放弃使用StdOutImpl来输出日志
  • 解决方案
    放弃使用StdOutImpl输出日志,去掉log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 配置。在application.yml中使用常规logback-spring配置。
    logging:
     level:
         com.XXX.mapper: debug
    
    就可以正常输出sql语句了。

作者:hebiris

原文链接:https://www.jianshu.com/p/c143c46120d5

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐