티스토리 뷰

"eclipse spring Console 창에서 SQL 쿼리 Log를 자세히 출력을 위한 설정"

 

 

1. pom.xml 의존성 추가

<!-- SQL 로그 출력 -->
<!-- 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>

 

2. root-context.xml (또는 dataSource-context.xml) 설정 변경

기존

<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
  <property name="driverClassName" value="org.mariadb.jdbc.Driver" />
  <property name="url" value="jdbc:mariadb://127.0.0.1:3306/디비명" />
  <property name="username" value="아이디" />
  <property name="password" value="패스워드" />
</bean>	 

 

변경 

  • driverClassName value 변경 
  • url의 value를 변경 
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
  <property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
  <property name="url" value="jdbc:log4jdbc:mariadb://127.0.0.1:3306/디비명" />
  <property name="username" value="아이디" />
  <property name="password" value="비밀번호" />
</bean>	 

 

 

3.  log4jdbc.log4j2.properties 파일 생성 및 설정

  • resources 폴더에 log4jdbc.log4j2.properties 파일을 생성하고 아래 코드를 삽입 후 저장  
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.drivers=org.mariadb.jdbc.Driver

resources 폴더에 파일을 생성

 

 

4. log4j.xml 설정 추가

  <!-- SQL 로그 출력을 위한 설정 추가 시작  --> 영역의 내용을 추가 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

	<!-- Appenders -->
	<appender name="console" class="org.apache.log4j.ConsoleAppender">
		<param name="Target" value="System.out" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%-5p: %c - %m%n" />
		</layout>
	</appender>
	
	<!-- Application Loggers -->
	<logger name="com.myproject.controller">
		<level value="info" />
	</logger>
	
	<!-- 3rdparty Loggers -->
	<logger name="org.springframework.core">
		<level value="info" />
	</logger>
	
	<logger name="org.springframework.beans">
		<level value="info" />
	</logger>
	
	<logger name="org.springframework.context">
		<level value="info" />
	</logger>

	<logger name="org.springframework.web">
		<level value="info" />
	</logger>


<!-- SQL 로그 출력을 위한 설정 추가 시작  ----------------------------->
	<logger name="jdbc.sqlonly" additivity="false"> 
		<level value="info"/> 
		<appender-ref ref="console"/> 
	</logger>
	<logger name="jdbc.sqltiming" additivity="false">
		<level value="warn" />
		<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> 
<!-- SQL 로그 출력을 위한 설정 추가 끝 ----------------------------->


	<!-- Root Logger -->
	<root>
		<priority value="warn" />
		<appender-ref ref="console" />
	</root>
	
</log4j:configuration>

 

5. Console에 출력된 SQL Log (Parameter와 Select 결과가 보기 쉽게 출력) 

 

 

logger name 및 Level 설명 
logger name 설명
jdbc.sqlonly SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다
jdbc.sqltiming SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다.
jdbc.audit ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남김
모든(많은 양) 로그가 생성 되므로 필요시만 사용, 사용 권장 X
jdbc.resultset ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남김
많은 양의 로그가 생성 되므로 필요시만 사용
jdbc.resultsettable SQL 결과 조회된 데이터의 table을 로그로 남김.

 

logger level 설명
degug 디버그를 위한 용도로 일반 정보도 상세하게 출력 
info 상태 변경과 같이 일반적인 정보를 출력
wran 경고성 메시지 (처리가능한 문제 또는 향후 에러의 원인이 될 수 있는 경고성 메시지)
error 일반적인 에러로 처리가 반드시 필요
fatal 시스템적으로 아주 심각한 에러가 발생, 어플리케이션 작동 불가

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday