
p6spy란 Java 애플리케이션에서 JDBC 호출을 가로채 데이터베이스와의 모든 상호작용을 모니터링 하고 로그로 기록하는 기능을 제공하며, 데이터베이스 쿼리 실행에 관련된 세부 정보를 실시간으로 분석 할 수 있게 해주는 라이브러리이다. 이를 통해 개발자는 애플리케이션의 성능 최적화, 디버깅, SQL 쿼리 분석 등에 유용하게 활용할 수 있다.
dependencies {
// 기존 의존성들...
// P6Spy 의존성 추가
implementation 'p6spy:p6spy:3.10.1'
// 사용 중인 데이터베이스 JDBC 드라이버 (예: MySQL)
runtimeOnly 'mysql:mysql-connector-java'
}
spring:
datasource:
url: jdbc:p6spy:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC
username: root
password: your_password
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
appender=com.p6spy.engine.spy.appender.StdoutLogger
logMessageFormat=com.p6spy.engine.spy.appender.CustomLineFormat
customLogMessageFormat=%(sqlSingleLine)p6spy의 'CustomLineFormat'을 사용하면, 다양한 변수를 조합하여 로그 메시지를 정의할 수 있다. 사용 가능한 변수는 다음과 같다.
#spy.properties에 적용한다.
# 단순 SQL 로그 (쿼리와 실행시간)
customLogMessageFormat=%(sqlSingleLine)|Execution Time: %(executionTime) ms
# 상세 로그 (쿼리, 실행시간, 카테고리, 연결 ID)
customLogMessageFormat=Time: %(currentTime)|Exec: %(executionTime) ms|Cat: %(category)|Conn: %(connectionId)|SQL: %(sqlSingleLine)