Springboot는 mybatis-plus의 sql 출력을 로그 파일에 통합합니다.

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

그러면 프로젝트 정보의 로그 파일에서 다음과 같은 효과를 볼 수 있습니다.

여기에 이미지 설명 삽입

추천

출처blog.csdn.net/qq798867485/article/details/129734277