Spring/코드로 배우는 스프링 웹 프로젝트

log4jdbc-log4j2 및 로고 레벨 설정

하루인생 2021. 2. 23. 14:42

log4jdbc-log4j2l

 

og4jdbc-log4j2를 사용하면 sql문의 결과를 좀 더 보기 쉽게 만들어 준다. 

 

1) log4jdbc-log4j2 라이브러리 추가

 

log4jdbc-log4j2사용을 위해 라이브러리를 추가한다.

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

 

 

2) log4jdbc.log4j2.properties 생성

 

아래 경로에 log4jdbc.log4j2.properties파일을 생성한다.

new -> other -> General -> Untitled Text File

-> 코드 작성 -> 저장 -> 경로설정(아래 경로) -> 파일명 작성 

 

log4jdbc.log4j2.properties

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

 

3) root-context.xml 파일 수정

 

driverClassName와 jdbcUrl 설정을 변경해줘야 한다. 

 

수정 전

	<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:XE"></property>
		<property name="username" value="book_ex2"></property>
		<property name="password" value="1234"></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:XE"></property>
		<property name="username" value="book_ex2"></property>
		<property name="password" value="1234"></property>
	</bean>

 

이전에 만들었던 테스트 코드로 테스트해봤다.

아래와 같이 깔끔하게 출력이 나온다.

 

 

로고 레벨 설정

 

위 사진과 같이 log4jdbc에 의해 상당히 많은 로그가 출력됐다. (jdbc.audit, jdbc.resultset...)

이 로그의 양을 줄이기 위해서 로고 레벨을 설정하면 된다.

 

log4j.xml파일 수정

 

src/test/resources/log4j.xml 파일을 수정한다.

 

log4j.xml파일의 아래 부분에 의해서 info레벨의 로그가 출력된다.

(warn으로 바꾸면 info레벨의 로그가 출력되지 않는다.)

	<root>
		<priority value="info" />
		<appender-ref ref="console" />
	</root>

 

log4jdbc의 특정한 name을 가진 부분의 레벨을 warn으로 변경하면 출력되지 않을 것이다.

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

 

출력이다. 코드가 많이 줄었다.