본문 바로가기
Study Hard/HW

[환경설정] SpringLegacy에 log4j -> log4j2 로그 적용 (오라클DB)

by 코플+ 2023. 7. 10.
개발을 하면서 db에서 가져오는 값을 한번에 보는 방법에 대해 며칠헤매다가 적용하지 못햇었다가 드디어 방법을 찾았다. 이 설정 하나 만으로도 디버깅하는 시간을 꽤나 줄여준다.

 

Console 창에 gui로 select한 데이터를 보여주는 방식

 

인터넷에 이 설정을 찾아도 적용되지 않는 이유는 log4j2 설정 뿐만 아니라 jdbc설정도 추가로 해줘야 하기 때문이다.

 

다음은 log4j 설정에서 log4j2 로 설정으로 변경하고 table로 보는설정이다.

 

 

1. Log4j2 Maven Dependency 확인

 - 우선 Maven pom.xml 설정을 확인한다.

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

 - 없으면 dependency 를 추가 시켜준다.

 

2. log4j2.properties 생성

 

- 기존 log4j.xml에 위치에 "log4jdbc.log4j2.properties" 파일을 생성해준다.

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0 // 길이 제한 해제

파일 설정은 아래와 같이 해준다.

 

3. log4j.xml 추가 설정

	<logger name="jdbc.sqltiming" additivity="false">
		<level value="warn" />
		<appender-ref ref="console"/>
	</logger>
	<logger name="jdbc.sqlonly" additivity="false">
		<level value="info"/>
		<appender-ref ref="console"/>
	</logger>
	<logger name="jdbc.audit" additivity="false">
		<level value="warn"/>
		<appender-ref ref="console"/>
	</logger>
	<logger name="jdbc.resultset" additivity="false">
		<level value="warn" />
		<appender-ref ref="console"/>
	</logger>
	<logger name="jdbc.resultsettable" additivity="false">
		<level value="info"/>
		<appender-ref ref="console"/>
	</logger>

 - 기존 log4j.xml 에 추가 log 설정을 해준다.

 

4. Root-context.xml 설정

	<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
	 	<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>
	 	<property name="url" value="jdbc:log4jdbc:oracle:thin:@{ip주소}:{포트}:xe"/>
	 	<property name="username" value="{아이디}"/>
	 	<property name="password" value="{비밀번호}"/>
	 </bean>

- name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"

- name="url" value="jdbc:log4jdbc:oracle:thin:@{ip주소}:{포트}:xe"

- 다음을 주의해서 추가해준다.

 

 

 

그러면 다음과 같이 쿼리문과 테이블이 모두 콘솔창에 출력된다.

댓글