HikariCP 자체적으로 SQL 실행 로그를 기록하는 기능은 제공하지 않지만, JDBC 드라이버의 logger 설정 또는 P6Spy 같은 SQL 로깅 라이브러리를 활용하면 코드에서 SQL 실행 로그를 남길 수 있습니다.
logger 설정 (MySQL, PostgreSQL 등)일부 데이터베이스 드라이버(MySQL, PostgreSQL)는 자체적으로 SQL 실행 로그를 출력하는 기능을 제공합니다. 이를 활용하면 HikariCP를 사용하면서 SQL 실행 로그를 남길 수 있습니다.
MySQL의 logger 설정을 HikariCP에 추가하면 SQL 실행 로그를 남길 수 있습니다.
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/your_db?logger=Slf4JLogger");
config.setUsername("your_user");
config.setPassword("your_password");
HikariDataSource dataSource = new HikariDataSource(config);
MySQL에서는 logger=Slf4JLogger를 설정하면 SQL 실행 로그가 SLF4J 로거에 기록됩니다.
PostgreSQL JDBC 드라이버는 loggerLevel 및 loggerFile 옵션을 지원합니다.
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:postgresql://localhost:5432/your_db?loggerLevel=TRACE");
config.setUsername("your_user");
config.setPassword("your_password");
HikariDataSource dataSource = new HikariDataSource(config);
이렇게 하면 PostgreSQL의 SQL 실행 로그가 TRACE 레벨로 출력됩니다.
SQL 실행 로그를 남기려면 P6Spy 라이브러리를 사용하는 것이 가장 확실한 방법입니다.
Maven:
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.9.1</version>
</dependency>
Gradle:
dependencies {
implementation 'p6spy:p6spy:3.9.1'
}
HikariCP의 JDBC URL을 P6Spy로 감싸면 SQL 실행 로그를 남길 수 있습니다.
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:p6spy:mysql://localhost:3306/your_db");
config.setUsername("your_user");
config.setPassword("your_password");
HikariDataSource dataSource = new HikariDataSource(config);
여기서 jdbc:mysql://... 대신 jdbc:p6spy:mysql://... 를 사용해야 합니다.
spy.properties 설정 파일 추가 (로그 포맷 지정)src/main/resources/spy.properties 파일을 생성하고 아래 내용을 추가합니다.
modulelist=com.p6spy.engine.spy.P6SpyFactory
logMessageFormat=com.p6spy.engine.logging.format.SimpleFormatter
appender=com.p6spy.engine.spy.appender.Slf4JLogger
이렇게 설정하면 SQL 실행 로그가 SLF4J 로거를 통해 출력됩니다.
P6Spy가 SQL 실행 로그를 남기는 방식:
2025-02-16 12:00:00 [DEBUG] SELECT * FROM users WHERE id = 1
이제 모든 SQL 실행이 로그로 출력됩니다.
| 방법 | 지원 여부 | 설정 방법 |
|---|---|---|
| HikariCP 자체 SQL 로깅 | ❌ | 지원하지 않음 |
JDBC 드라이버 logger 설정 | ⭕ (MySQL, PostgreSQL 등) | ?logger=Slf4JLogger 또는 ?loggerLevel=TRACE 추가 |
| P6Spy 사용 | ⭕ (모든 DB 가능) | jdbc:p6spy:mysql://... 사용 및 spy.properties 설정 |
가장 쉬운 방법은 MySQL이나 PostgreSQL의 logger 옵션을 활용하는 것이고, 더 강력한 로깅이 필요하다면 P6Spy를 사용하는 것이 좋습니다.
어떤 방법을 적용할지 고민되신다면 데이터베이스 종류를 알려주시면 더 구체적인 방법을 안내해 드리겠습니다. 😊