본문 바로가기
SPRING

[SPRING] Logback와 Log4jdbc을 사용한 쿼리 로그

by steadyMan 2021. 11. 21.

구현환경

  • 프레임워크 : Spring Framework(2.5.4)
  • 빌드도구 : Gradle
  • IDE : STS
  • DB : H2

LogBack이란?

- 자바 오픈소스 로깅 프레임워크 SLF4J의 구현체

- Spring boot의 경우 org.springframework.boot:spring-boot-starter-web 에 의존성 추가되어있다.

 

1. log4jdbc의존성 추가

  - build.gradle에 implementation추가 

implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'

2. src/main/resources 에 logback.xml 파일 생성

    - 로그를 파일로 생성하는등 다양한 로깅방법을 제공하지만

      이 글에서는 콘솔에 출력하는걸 목적으로 수행

<configuration>
  <!-- STDOUT(콘솔에 로그를 출력) -->
  <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>
  
  

  <!-- log4jdbc 옵션 설정 -->
  <logger name="jdbc" level="OFF"/>
  <!-- sql문만 로깅할지 여부 -->
  <logger name="jdbc.sqlonly" level="OFF"/>
  <!-- 쿼리문 수행시간 로깅 여부 -->
  <logger name="jdbc.sqltiming" level="DEBUG"/>
  <!-- ResultSet외 모든 JDBC 호출 정보 로깅할지 여부 -->
  <logger name="jdbc.audit" level="OFF"/>
  <!-- ResultSet 포함 모든 JDBC 호출 정보를 로깅 -->
  <logger name="jdbc.resultset" level="OFF"/>
  <logger name="jdbc.resultsettable" level="DEBUG"/>
  <!-- connection open close 로깅 여부 -->
  <logger name="jdbc.connection" level="OFF"/>
  
  <root level="INFO">
    <appender-ref ref="STDOUT" />
  </root>
  
</configuration>

3. src/main/resources 하위에 log4jdbc.log4j2.propertis파일 생성

# log4jdbc.log4j2.propertis파일에 해당 속성 추가

# log4jdbc spy의 로그 이벤트를 slf4j를 통해 처리한다.
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
# 로그를 표시할 줄의 제한, 0은 무제한
log4jdbc.dump.sql.maxlinelength=0

4. 로그 정상출력 확인 

 

댓글