[Spring] log4jdbc-log4j2 라이브러리

msriver·2020년 6월 21일
0

Spring

목록 보기
8/16

옵션

MyBatis는 SQL을 처리할 때 JDBC의 PreparedStatement를 이용한다.

만약 쿼리문이 복잡한 경우 ? 로 나오는 값이 제대로 되었는지 확인하기가 쉽지 않고 실행된 SQL문의 내용을 정확히 확인하기가 어렵다.

log4jdbc-log4j2 라이브러리는 PreparedStatement에 사용된 ? 가 어떤 값으로 처리되었는지 확인할 수 있다.

그러나 이것은 필수적인건 아니고 옵션이므로 선택해서 적용하면 될거 같다.

라이브러리 설정

pom.xml에 라이브러리 추가

<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4 -->
<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4</artifactId>
    <version>1.16</version>
</dependency>

라이브러리를 추가한 후

1) 로그 설정 파일 추가
src/main/resources에 log4jdbc.log4j2.properties 파일 추가함.
아래 내용 작성

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator

2) JDBC연결 정보 수정
log4jdbc를 이용하는 경우 JDBC드라이버와 URL 정보를 수정해야한다. (root-context.xml)

  • 수정 전
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
		<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:myoracle"></property>
		<property name="username" value="ora_user"></property>
		<property name="password" value="hong"></property>
	</bean>
  • 수정 후
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
		<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
		<property name="jdbcUrl" value="jdbc:log4jdbc:oracle:thin:@localhost:1521:myoracle"></property>
		<property name="username" value="ora_user"></property>
		<property name="password" value="hong"></property>
	</bean>

로그 레벨 설정

테스트코드를 실행하다보면 상당히 많은 양의 로그가 출력이 되는데 나중에 익숙해지면 이는 불편하다고 느낄 수 있다.
이때 로그 레벨을 이용해 수정을 해주면 된다.

src/test/resources 의 log4j.xml 파일을 이용하여 설정
(테스트 코드가 실행될 때 로그와 관련 설정은 src/main/resources가 아님을 주의)

<logger name="jdbc.audit">
	<level value="warn" />
</logger>
<logger name="jdbc.resultset">
	<level value="warn" />
</logger>
<logger name="jdbc.connection">
	<level value="warn" />
</logger>

위와 같이 추가적인 logger를 지정해서 처리해준다. 기본설정의 info수준이므로 warn과 같이 높은 레벨의 로그만 기록하게 수정하는 것.

profile
NOBODY

1개의 댓글

comment-user-thumbnail
2021년 3월 30일

책의 내용입니까?
코드로 배우느 X XXX XXXX 의 내용 맞습니까?
아니면 별개의 내용입니까?

답글 달기