본문 바로가기

Spring

Spring boot SQL 로그 설정(Log4j2)

반응형

콘솔창에서 쉽게 쿼리와 결과를 확인하고 싶을때.

보통 log4j를 많이 사용한다.

따라서 Spring boot 사용시 log4j 설정법을 기록해 둔다.

 

Maven dependency 추가

<!-- log4j2 -->

<dependency>

    <groupId>org.bgee.log4jdbc-log4j2</groupId>

    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>

    <version>1.16</version>

</dependency>

 

DataConfig 설정

application.properties 에 설정되어 있는 경우

spring.datasource.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy

spring.datasource.url=jdbc:log4jdbc:mysql://localhost/test

 

javaConfig 사용했을경우

public DataSource dataSource() {
        SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
        dataSource.setDriverClass(net.sf.log4jdbc.sql.jdbcapi.DriverSpy.class);
        
        dataSource.setUrl("jdbc:log4jdbc:mysql://localhost/test");
        dataSource.setUsername("test");
        dataSource.setPassword("test!");
     
        return dataSource;
    }

굵게 칠해져 있는 부분을 수정해준다.

 

log4jdbc.log4j2.properties 생성

resources 폴더에 log4jdbc.log4j2.properties 파일을 생성해 준다.

생성 후 아래 내용을 입력한다.

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

log4jdbc.dump.sql.maxlinelength=0

 

maxlinelength는 sql문을 최대 몇 라인까지 출력할 것인가를 결정하는데, 0으로 하면 제한 없이 실행된 그대로 출력이 되고, 설정하지 않으면 그냥 한줄로 쭉 출력된다.

 

logback.xml 설정

resources 폴더에 logback.xml을 아래와 같이 생성한다.

logback 파일을 통해 로그의 옵션을 설정할 수 있다.

 

<configuration>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

    <encoder>

      <pattern>%d{yyyyMMdd HH:mm:ss.SSS} [%thread] %-3level %logger{5} - %msg %n</pattern>

    </encoder>

  </appender>

  

  <logger name="jdbc" level="OFF"/>

  

  <logger name="jdbc.sqlonly" level="OFF"/>

  <logger name="jdbc.sqltiming" level="DEBUG"/>

  <logger name="jdbc.audit" level="OFF"/>

  <logger name="jdbc.resultset" level="OFF"/>

  <logger name="jdbc.resultsettable" level="DEBUG"/>

  <logger name="jdbc.connection" level="OFF"/>

  

  <root level="INFO">

    <appender-ref ref="STDOUT" />

  </root>

  

</configuration>

 

옵션설명

 - jdbc.sqlonly : SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다. 
 - jdbc.sqltiming : SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다. 
 - jdbc.audit : ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다. 
 - jdbc.resultset : ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남긴다.

jdbc.resultsettable : SQL 결과 조회된 데이터의 table을 로그로 남긴다.

 

 

결과

콘솔창에 파라미터를 포함한 쿼리와 결과값이 이쁘게 출력된다.

반응형

'Spring' 카테고리의 다른 글

Spring Boot 신규 프로젝트 생성  (0) 2019.04.12
Properties 추가하기  (0) 2014.12.30
Spring + mybats 환경에서 xml 파일 변경시 서버 재시작 없이 반영 방법  (0) 2014.04.10
용어정리  (0) 2013.06.15
web.xml  (0) 2013.06.14