mybatis-plus配合logback 设置sql语句输出到文件并关闭控制台输出

引用博客: https://www.cnblogs.com/grasp/p/12354955.html

Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具:

SLF4J
Apache Commons Logging
Log4j 2
Log4j
JDK logging
具体选择哪个日志实现工具由MyBatis的内置日志工厂确定。它会使用最先找到的(按上文列举的顺序查找)。如果一个都未找到,日志功能就会被禁用。

标准日志实现

指定 MyBatis 应该使用哪个日志记录实现。如果此设置不存在,则会自动发现日志记录实现。

<settings>
       <setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

测试,可以看到控制台有大量的输出!我们可以通过这些输出来判断程序到底哪里出了Bug

logback

在applaction.yml中配置mybatis-plus的日志输出

//这里的log-impl实现是stdoutImpl。它只能输出到控制台窗口单不能写入文件。
//要想写入文件,需要配合日志框架进行配置,我这里使用的日志框架是logback,
//所以我这边修改了log-impl的实现类为org.apache.ibatis.logging.slf4j.Slf4jImpl并定义了日志级别
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
//这里的XX自定义你项目的包路径。具体什么意思有待开发。目前来看是必须要配置的项
 logging:
   level:
     com.XXX: debug
值得注意的是:

log-impl指定的值为org.apache.ibatis.logging.Log接口的某个实现类,是设置打印mybatis的日志实现
图片来源:https://www.cnblogs.com/grasp/p/12354955.html
如果配置为org.apache.ibatis.logging.stdout.StdOutImpl就只会在控制台窗口打印,不会记录到日志文件。如果需要保存打印的SQL到文件就不能设置为StdOutImpl,可以设置为Slf4jImpl,也可以不设置。然后对应接口所在包设置logback对应包的日志等级

# 日志配置
logging:
  level:
    com.XXX: debug
    org.springframework: warn
    org.apache.ibatis.logging: debug  

这样就可以把mybatis的打印内容,保存到文件中了。
以上的logging级别配置如果还是不行的话,就删除这个日志级别的配置,在logbak-spring.xml中配置你的sql语句输出appender

<appender name="SQL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/${PROJECT_NAME}/sql.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}/%d{yyyy-MM-dd}/sql.%i.zip</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>2</MaxHistory>
            <!--日志文件最大的大小-->
            <MaxFileSize>100MB</MaxFileSize>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!-- 格式化输出: %d: 日期; %-5level: 级别从左显示5个字符宽度; %thread: 线程名; %logger: 类名; %M: 方法名; %line: 行号; %msg: 日志消息; %n: 换行符 -->
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] [%logger{50}] [%M] [%line] - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>

 </appender>
 <!-- myibatis log configure; nmae为maper文件对应的包路径,additivity代表是否把当前日志信息向上
 传递(<root>是它的上级),默认是true;这里设置为false,就不会把日志信息
 向root传入;level设置的级别为DEBUG,mabatis的日志级别默认为DEBUG级别;
 -->
    <logger name="com.XXX.mapper" level="DEBUG" additivity="false">
        <appender-ref ref="SQL_FILE"/>
    </logger>

注意:如果在logback-spring.xml文件中通过下面的方式配置的时候:

   <springProfile name="dev,test,prod">
        <root level="info">
            <appender-ref ref="console"/>
            <appender-ref ref="logFile"/>
        </root>
    </springProfile>

需要在yml配置文件中添加:

spring:
  profiles:
    active: dev

不然在控制台或者文件中是空白的

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值