본문 바로가기

Java/Spring

log4jdbc 적용

slf4j & logback 설정에 이어 log4jdbc를 적용해 보겠습니다. 

maven

추가로 log4jdbc를 받아옵니다. 

<!-- log4jdbc -->
<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
    <version>1.16</version>
</dependency>
cs

추가설정

src/main/resources 안에 log4jdbc.log4j2.properties 파일을 만듭니다. 

1라인은 필수고 2라인은 쿼리를 정렬하는 용도라서 선택입니다.


log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
cs


데이터베이스 연결정보를 수정합니다. 

오라클의 경우에도 jdbcUrl 에서 jdbc:log4jdbc:oracle 과 같이 처리하시면 됩니다. 


<entry key="db.driverClassName">net.sf.log4jdbc.sql.jdbcapi.DriverSpy</entry>
<entry key="db.jdbcUrl">jdbc:log4jdbc:mysql://127.0.0.1:3306/schema?autoReconnect=true&amp;useSSL=false&amp;serverTimezone=UTC</entry>
<entry key="db.username">...</entry>
<entry key="db.password">...</entry>
cs


마지막으로 지난번 만들었던 logback.xml 로 가서 logger를 설정해 줍니다.

저는 sqltiming만 나오는걸로 하겠습니다.


<!-- mybatis query log setting -->
<logger name="jdbc" level="OFF" />
<logger name="jdbc.sqlonly" level="OFF" />
<logger name="jdbc.sqltiming" level="DEBUG" />
<logger name="jdbc.audit" level="OFF" />
<logger name="jdbc.resultset" level="OFF" />
<logger name="jdbc.resultsettable" level="OFF" />
<logger name="jdbc.connection" level="OFF" />
cs

결과

아래와 같이 파라미터가 들어가 있고 정렬되어 있는 쿼리를 로그로 찍을 수 있습니다.