java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > mybatis-plus无法通过logback-spring输出日志

mybatis-plus无法通过logback-spring输出日志问题及解决

作者:静静糖果色

本文介绍了在SpringBoot项目中使用Mybatis-Plus时,日志只能在控制台输出而无法通过logback输出的问题及解决方法,最终选择不使用StdOutImpl输出日志,而是使用常规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();
<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>
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语句了。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文