본문 바로가기

BackEnd/Spring

[코드로 배우는 스프링 웹 프로젝트] ch04 MyBatis와 스프링 연동 2( log4jdbc-log4j2)

728x90
반응형

3. log4jdbc-log4j2 설정

   ▷ MyBatis는 내부적으로 JDBC의 PreparedStatement를 이용해 SQL을 처리

   ▷ SQL에 전달되는 파라미터는 JDBC와 같이 '?'로 치환되어 처리됨.

   ▷ SQL 로그를 제대로 보기 위해서 log4jdbc-log4j2 라이브러리 사용

 

 

◎ pom.xml 내용 수정(log4jdbc-log4j2 라이브러리 설정)

...(생략)...

<!-- 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>

...(생략)...

 

 

◎ src/main/resources → org → log4jdbc.log4j2.properties 생성

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

 

 

◎ src/main/webapp/WEB-INF/spring → root-context.xml (내용 수정)

	<!-- Root Context: defines shared resources visible to all other web components -->
	<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="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_ex"></property>
		<property name="password" value="book_ex"></property>	

	</bean>

 

 

◎ 로그의 레벨 설정

테스트 코드 실행시 나타나는 'INFO ....' 메시지는 log4j.xml 마지막 부분의 영향을 받음(아래의 코드)

...(생략)...
	<!-- Root Logger -->
	<root>
		<priority value="info" />
		<appender-ref ref="console" />
	</root>
	
</log4j:configuration>

 

 

◎ 위의 log4j.xml에 내용 추가

...(생략)...

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

...(생략)...


기본 설정의 로그는 info 레벨이고 warn과 같이 좀 더 높은 레벨의 로그만 기록하게 수정하면 테스트 코드 실행시 이전에 비해 로그의 양이 줄어듬

 

log4jdbc-log4j2를 이용해서 SQL에 데이터가 어떻게 전달되었는지 보고 연결시 콘솔창에 나타나는 것에 대해 알아보았습니다.

 

라이브러리가 많아서 헷갈리는 개념이 좀 많네요,,ㅎㅎ

 

그래도 반복해서 보면서 익혀볼게요!

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

728x90
반응형