P6Spy는 애플리케이션에서 데이터 조작 문을 가로채고 수정하는 데 사용할 수 있는 오픈 소스 프레임워크입니다.
SQL문의 기록장치에 해당하는 P6Spy를 통해 SQL문을 가로챌 수 있어 성능 분석 등 관련 분석에 활용할 수 있습니다.
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.20</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.1</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>3.8.2</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> </dependencies>
spring:
datasource:
드라이버 클래스 이름: com.mysql.cj.jdbc.Driver
#드라이버 클래스 이름: com.p6spy.engine .spy.P6SpyDriver
유형: com.alibaba.druid.pool.DruidDataSource
URL: jdbc:mysql://localhost:3306/course_db?serverTimezone=GMT%2B8
# URL: jdbc:p6spy:mysql://localhost: 3306/course_db?serverTimezone=GMT%2B8
사용자 이름: root
비밀번호: root# mybatis-plus
mybatis-plus:
구성:
log-impl: org.apache.ibatis.logging의 SQL 로그 출력을 엽니다. stdout .StdOutImpl
@Data @NoArgsConstructor @AllArgsConstructor @TableName("course_1") public class Course { @TableField("cid") private Long cId; private String cName; private Integer userId; private String cStatus; }
public interface CourseMapper extends BaseMapper<Course> { }
@SpringBootApplication @MapperScan(basePackages = "cn.zysheep.mapper") public class ShardingjdbcdemoApplication { public static void main(String[] args) { SpringApplication.run(ShardingjdbcdemoApplication.class, args); } }
@SpringBootTest @Slf4j class ShardingjdbcdemoApplicationTests { @Autowired private CourseMapper courseMapper; @SneakyThrows @Test void findCourse() { courseMapper.selectList(null).forEach(System.out::println); } }
mybatis-plus
에서도 출력 SQL 로그를 출력할 수 있지만 우리가 원하는 효과는 아닙니다. , 어떻게 원하는 SQL 로그 출력을 제어하려면 P6Spy 오픈 소스 제품을 사용할 수 있습니다. mybatis-plus
也可以打印输出的sql日志,但是不是我们想要的效果,如何来控制想要的sql日志输出,可以使用P6Spy开源产品。
resources
目录添加配置文件,类似log4j.xml
# 실제 드라이버시작하기 P6Spy
dateformat=yyyy-MM-dd HH:mm:ss
spy.properties
구성 정보를 기록하려면log4j.xml
와 유사한resources
디렉터리에 구성 파일을 추가하세요
module.log=com .p6spy.engine.logging.P6LogFactory , com.p6spy.engine.outage.P6OutageFactory
# SQL 로그 인쇄
# 1. logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat
# 2. logMessageFormat=com.p6spy. engine.spy.appender.CustomLineFormat
# customLogMessageFormat=%(currentTime) | SQL 사용 시간: %(executionTime) ms | 연결 정보: %(category)-%(connectionId) | SQL 실행: %(sql)
# 3. 사용자 정의 로그 인쇄(정규화된 클래스 이름)
logMessageFormat=cn.zysheep.config.P6SPYConfig
# 로그 시스템을 사용하여 기록 sql
appender=com.p6spy.engine.spy.appender.Slf4JLogger
## 로깅 구성 로그 예외
excludecategories=info,debug,result, batc,resultset
# p6spy 드라이버를 프록시로 사용하도록 설정
deregisterdrivers=true
# 날짜 형식
driverlist=com. mysql.cj.jdbc.Driver
# 느린 SQL 기록 활성화 여부비밀번호: root# mybatis-plusP6Spy에는 위 구성 파일에 표시된 대로 SQL 출력 형식이 내장되어 있습니다. . 여기서는 사용자 정의 SQL 로그 인쇄
P6SPYConfigpublic class P6SPYConfig implements MessageFormattingStrategy { @Override public String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql, String url) { Map<String, Object> message = new LinkedHashMap<>(8); String newPrepared = prepared.replace(" ", "").replace("\n", " "); message.put("prepared", newPrepared); String newSql = sql.replace(" ", "").replace("\n", " "); message.put("sql", newSql); return JSONObject.toJSONString(message, true); } }
application.yml
spring:
datasource: # 드라이버 클래스 이름: com.mysql.cj.jdbc.Driver드라이버 클래스 이름: com을 사용합니다. p6spy.engine.spy.P6SpyDriver
사용자 이름: root
유형: com.alibaba.druid.pool.DruidDataSource
# URL: jdbc:mysql://localhost:3306/course_db?serverTimezone=GMT%2B8
URL: jdbc:p6spy:mysql: / /localhost:3306/course_db?serverTimezone=GMT%2B8
mybatis-plus: 구성:
log-impl: org.apache의 SQL 로그 출력을 켜세요. ibatis .logging.stdout.StdOutImpl🎜🎜🎜테스트 클래스는 변경되지 않았습니다🎜🎜🎜🎜위 내용은 SpringBoot가 P6Spy를 통합하여 SQL 로깅을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!