본문 바로가기
공부하는/spring

Spring sql 로그 출력하기

by fromkong 2021. 2. 4.

스프링 프로젝트 생성시 디폴트로 출력되는 로그로는 개발할 때 참고하기에 한계가 있다.

더 자세한 쿼리로그를 출력하기위한 세팅을 해야한다.

 pom.xml 설정

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

root-context 설정

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  <property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy" />
  <property name="url" value="jdbc:log4jdbc:mysql://127.0.0.1:3306/DB스키마이름?useSSL=false&amp;serverTimezone=UTC&amp;characterEncoding=utf8" />
  <property name="username" value="DB유저이름"></property>
  <property name="password" value="비밀번호"></property>
</bean> 

 

원래의 설정에서 줄그은 부분만 위의 코드로 바꿔주었다.

 

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="driverClassName" value="com.mysql.cj.jdbc.Driver">

<property name="url" value="jdbc:mysql://127.0.0.1:3306/DB스키마이름?useSSL=false&amp;serverTimezone=UTC&amp;characterEncoding=utf8">

log4jdbc.log4j2.properties 생성

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

src/main/resources아래에 log4jdbc.log4j2.properties 파일을 생성하여 위를 복사하여 붙여넣기

log4j.xml 수정

 	<!-- SQL Logger -->
	<logger name="jdbc.sqlonly" additivity="false"> 
		<level value="info"/> 
		<appender-ref ref="console"/> 
	</logger>

	<logger name="jdbc.resultsettable" additivity="false"> 
		<level value="info"/>  
		<appender-ref ref="console"/> 
	</logger> 

구글링해보면 추가할게 이것저것 더 있든데 사실상 sqlonly랑 resultsettable만 추가하면 넘치도록 쾌적한 코딩이 가능하다.

 

-참고로  나는 log4.xml에 jdbc.sqlonly,jdbc.resultsettable 를 모르고 두번씩 써서 처음에 오류가 났다...

저번에 로그찍어 볼려다가 실패하고 다음에 쓰겠지 하고 안지웠었는데 멍청하게 그 아래 똑같은걸 또 썼다.

log4j:ERROR Attempted to append to closed appender named [console].

라는 에러가 뜨면 중복된 logger name이 있나 확인해 보시길...

Console

잘찍힘 ㅎ 훗날에 내가 이글 보고 다시 설정할 것이다...

분명 까먹을 것이 뻔하니까..

댓글