Springboot интегрирует вывод sql mybatis-plus в файл журнала.
В обычной ежедневной разработке мы хотим, чтобы sql печатался на консоли, пока конфигурация выглядит следующим образом
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
Но в продакшене, если вы хотите вывести sql в лог файл, то есть несколько способов добиться этого Ниже я буду использовать два метода, обычно используемых в проекте (без введения сторонних зависимостей)
1. Измените конфигурацию файла yml
Недостаток: нужно включить уровень отладки указанного пакета, а в продакшене уровень лога вообще информационный
1. В выходном файле журнала конфигурации среда журнала Springboot по умолчанию — logback,
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
2. Изменить уровень вывода журнала
Поскольку класс реализации печати журнала JsqlParserCountOptimize, уровень журнала оценивается выше, если это уровень отладки, будет напечатан sql
logging:
level:
com.baomidou.mybatisplus: DEBUG
3. Измените уровень вывода журнала пакета картографа в проекте.
Поскольку маппер в нашем проекте имеет динамический прокси для класса операции базы данных, а уровень отладки также ограничен в org.apache.ibatis.executor.BaseExecutor, поэтому его также необходимо установить на уровень отладки
logging:
level:
com.baomidou.mybatisplus: DEBUG
com.xl.finance.module: DEBUG
Примечание. Если преобразователь находится в другом пакете, путь нельзя заменить подстановочным знаком (*), а диапазон путей пакета необходимо увеличить.
Настроенный в файле отладки проекта, вы можете увидеть следующий эффект
2. Введите зависимость p6spy
1. Введите пакет зависимостей p6spy
Версия репозитория maven: https://mvnrepository.com/artifact/p6spy/p6spy
<!-- https://mvnrepository.com/artifact/p6spy/p6spy -->
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.9.1</version>
</dependency>
2. Измените драйвер соединения jdbc.
В основном модифицировать: имя класса драйвера и jdbc-url
jdbc-url: jdbc:p6spy:mysql://${
db.host}:${
db.port}/${
db.name}?useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
3. Создайте новый файл с spy.properties
#日志格式
appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 格式化
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
# 取消JDBC的url前缀
useprefix=true
Затем в лог-файле информации нашего проекта мы можем увидеть следующий эффект