본문 바로가기
프로그래밍/Spring

Log4JDBC로 SQL 로그 출력을 위한 설정

by Mr-후 2019. 4. 17.
반응형

Log4JDBC로 SQL 로그 출력을 위한 설정



Log4JDBC를 사용해서 JDBC드라이버를 프록시로 래핑하여 SQL로그를 출력하는 방법. 

pom.xml 

<dependency>

<groupId>org.lazyluke</groupId>

<artifactId>log4jdbc-remix</artifactId>

<version>0.2.7</version> <!-- 버전은 최신 유지 --> 

</dependency> 


logback.xml수정 

Log4JDBC가 SQL 로그를 출력하도록 Logback의 레벨을 설정. 

src/main/resources/logback.xml파일을 다음과 같이 설정 

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>

<include resource="org/springframework/boot/logging/logback/base.xml" />

<!-- 스프링부트에 이미 마련되어 있는 기본설정을 포함, 기본값과 다른 부분만 설정할 수 있다. --> 

<logger name="jdbc" level="OFF" />

<!-- Log4JDBC는 다양한 로그를 출력하는데, 여기서는 SQL로그만 출력하고 그 외의 내용은 출력하지 않도록 OFF로 설정 --> 

<logger name="jdbc.sqltiming" level="DEBUG" />

<!-- SQL로그는 디버그 레벨로 출력되므로 DEBUG로 설정 --> 

</configuration> 


Log4JDBC를 사용하려면 DataSource를 명시적으로 정의해야 한다. 

@Autowired
DataSourceProperties dataSourceProperties; 
DataSource dataSource; 


@Bean
DataSource realDataSource() {

//명시적 데이터베이스 연결 정보 

return this.dataSource;

}


@Bean
@Primary
DataSource dataSource() {

return new Log4jdbcProxyDataSource(this.dataSource); 

/**

* Log4jdbcProxyDataSource 클래스로 DataSource를 래핑한다. 이 클래스가 DataSource에 구현된 각각의 처리에 로깅 처리를 끼워 넣는다. 

*/ 

}

이 Bean정의 파일을 읽어들이기 위해 다음과 같이 App클래스에 @ComponentScan을 붙혀둔다. 



반응형