方式一:
在springboot 默認(rèn)配置文件 logback-spring.xml 下添加配置如下:
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern>
</layout>
</appender>
<!-- mybatis-plus 操作數(shù)據(jù)庫包所在路徑 -->
<logger name="com.xxl.job.executor.mapper" level="debug"/>
該種方式記錄的sql 語句,無法統(tǒng)計(jì)時(shí)間長度而且參數(shù)與sql 語句是分開的倒得。 不美觀
方式二:
使用第三方開源包庫 p6spy 打印分析sql,該種方式適合開發(fā)環(huán)境調(diào)試夭禽,不適合生產(chǎn)環(huán)境
1.引入依賴
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.9.1</version>
</dependency>
- 修改數(shù)據(jù)源配置 application-dev.properties
mysql.host.en.driver-class-name=com.p6spy.engine.spy.P6SpyDriver
mysql.host.en.url=jdbc:p6spy:mysql://localhost:3306/zmkm?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Hongkong
mysql.host.en.username=root
mysql.host.en.password=123456
mysql.host.en.type=com.alibaba.druid.pool.DruidDataSource
- 添加 p6spy 配置 p6spy.properties
module.log=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定義日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志輸出到控制臺(tái)驻粟,解開注釋就行了
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 指定輸出文件位置
logfile=C:\\data\\sql.log
# 使用日志系統(tǒng)記錄 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 設(shè)置 p6spy driver 代理
deregisterdrivers=true
# 取消JDBC URL前綴
useprefix=true
# 配置記錄 Log 例外,可去掉的結(jié)果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,batch,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 實(shí)際驅(qū)動(dòng)可多個(gè)
#driverlist=org.h2.Driver
# 是否開啟慢SQL記錄
outagedetection=true
# 慢SQL記錄標(biāo)準(zhǔn) 1 秒
outagedetectioninterval=1
通過mybatis-plus打印日志如下
Consume Time:9 ms 2021-02-11 20:45:27
Execute SQL:select *,sd.name as department_name from sys_user su left join sys_department sd on su.department_id=sd.id where su.id=2
Consume Time:9 ms 2021-02-11 20:47:40
Execute SQL:select *,sd.name as department_name from sys_user su left join sys_department sd on su.department_id=sd.id where su.id=2