본문 바로가기
spring/spring jpa

[Spring] log4jdbc로 쿼리 실행 결과 로그 출력

by moonsiri 2023. 9. 8.
728x90
반응형

log4jdbc로 쿼리 실행 결과 로그 출력하는 방법을 알아보겠습니다.

 

1. pom.xml에 의존성 추가

sql 로그를 남기기 위해 log4jdbc 의존성을 추가합니다.

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

https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1/1.16

 

2. jdbc properties 변경

DBMS에 상관없이 driverClassName을 net.sf.log4jdbc.sql.jdbcapi.DriverSpy로 변경합니다.

url은 jdbc:log4jdbc:{dbms}:{host} 로 변경합니다.

spring:
	datasource:
		driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
		url: jdbc:log4jdbc:mysql://localhost:3306

 

3. logback 설정

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight([%-5level]) %boldMagenta(%logger){35}:%L - %cyan(%msg%n)</pattern>
        </encoder>
    </appender>
    
    <logger name="jdbc" level="OFF"/>
    
    <!-- 열려있는 모든 번호와 연결 수립 및 해제 이벤트를 기록합니다. -->
    <logger name="jdbc.connection" level="OFF"/>
    
    <!-- resultset을 제외한 JDBC 호출 정보를 로그로 남긴다. -->
    <logger name="jdbc.audit" level="OFF"/>
    
    <!-- resultset을 포함한 JDBC 호출 정보를 로그로 남긴다. -->
    <logger name="jdbc.resultset" level="OFF"/>
    
    <!-- SQL문을 로그로 남긴다. -->
    <logger name="jdbc.sqlonly" level="OFF"/>

    <!-- SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다. -->
    <logger name="jdbc.sqltiming" additivity="false">
        <level value="INFO" />
        <appender-ref ref="CONSOLE" />
    </logger>

    <!-- SQL 결과 조회된 데이터의 table을 로그로 남긴다 -->
    <logger name="jdbc.resultsettable" additivity="false">
        <level value="INFO" />
        <appender-ref ref="CONSOLE" />
    </logger>

 

4. log4jdbc.log4j2.properties 생성

/src/main/resources 하위에 log4jdbc.log4j2.properties 파일을 생성하고 아래 내용을 입력합니다.

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0 #sql문을 최대 몇 라인까지 출력할지 여부: 0은 제한 없음

해당 파일을 생성하지 않으면 모든 쿼리로그가 다음과같이 log4jdbc.log4j2로 남겨집니다.

 

5. 결과 확인

 

728x90
반응형

댓글