Springboot는 mybatis-plus의 sql 출력을 로그 파일에 통합합니다.
일반적인 일일 개발에서는 구성이 다음과 같은 한 sql이 콘솔에 인쇄되기를 원합니다.
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
하지만 프로덕션에서 sql을 로그 파일로 출력하고 싶다면 이를 달성하는 방법은 여러 가지가 있는데, 아래에서는 프로젝트에서 일반적으로 사용되는 두 가지 방법을 사용하겠습니다(제3자 종속성을 도입하지 않고).
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
그러면 프로젝트 정보의 로그 파일에서 다음과 같은 효과를 볼 수 있습니다.