Database는 데이터가 최종적으로 저장되는 장소이며 프로그램에서 데이터들의 시작점이기도 합니다.
로직이 정상적으로 수행되었는지를 가장 명쾌하게 알 수 있는 부분은 이 SQL 문이 정상적으로 만들어졌는지를 확인해보는 일입니다.
하지만 Java에서 로그로 발생하는 SQL 문은 파라미터와 분리된 채로 나오게 되며, select 문이 길어질수록 이러한 단순 매핑 과정이 쉽지 않았습니다.
기존 라이브러리 log4jdbc 및 p4sql 의 경우에 설정이 복잡하고 프로젝트가 중지된 상태로 방치되어 있고,
여기에 SQL formatting 등 개인적으로 필요했던 기능들을 추가하는 것을 목적으로 프로젝트를 시작하였습니다.
LogJdbcDataSource
로 기존에 사용하던 `DataSource`를 감싸서 선언합니다.
아래는 스프링환경에서 LogJdbc를 사용하는 방법입니다.
@Bean
public DataSource simpleDataSource() {
SimpleDriverDataSource realDataSource = new SimpleDriverDataSource();
realDataSource.setDriverClass(org.h2.Driver.class);
realDataSource.setUrl("jdbc:h2:mem:testdb");
realDataSource.setUsername("sa");
realDataSource.setPassword("");
// LoggableDataSource의 생성자로 기존 DataSource를 넣으면 설정이 완료됩니다.
DataSource dataSource = new LogJdbcDataSource(realDataSource);
return dataSource;
}
SQL이 출력될 수 있도록 로그설정이 필요합니다. `net.chandol`로 로깅레벨을 설정을 추가해주셔야 합니다.
<!-- log4j일 경우에 아래와 같이 추가 -->
<logger name="net.chandol">
<level value="INFO"/>
<appender-ref ref="console"/>
</logger>