스프링

[Spring] log4jdbc-log4j2 설정하기(콘솔에 sql문 로그 찍기)

nan2 2022. 5. 25. 11:52
반응형

 

1. log4jdbc-log4j2 라이브러리 추가(build.gradle)

// https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1
implementation group: 'org.bgee.log4jdbc-log4j2', name: 'log4jdbc-log4j2-jdbc4.1', version: '1.16'

 

 

2. application.properties의 datasource url, driver-class-name 변경

# db
#spring.datasource.driverClassName=org.mariadb.jdbc.Driver
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
#spring.datasource.url=jdbc:mysql://localhost:3306/porfolReviewer?autoReconnect=true
spring.datasource.url=jdbc:log4jdbc:mariadb://localhost:3306/porfolReviewer?charSet=UTF-8
spring.datasource.username=root
spring.datasource.password=1111

 

 

3. log4jdbc.log4j2.properties 파일 생성 (src > main > resources 하위에 생성)

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0

 

 

4. logback.xml 파일 생성 

- console에 어떠한 형태로 log를 보여줄지 설정

 

- log 종류: 

jdbc.sqlresultsettable 쿼리 결과로 가져온 데이터를 테이블 형태로 로그 찍음
jdbc.resultset jdbc 모든 호출에 대한 정보를 로그 찍음
jdbc.audit resultset 제외 모든 정보를 로그 찍음
jdbc.connection jdbc 커넥션의 open, close 로그 찍음
jdbc.sqlonly 실행된 쿼리문을 로그 찍음
jdbc.sqltiming 실행된 쿼리문 + 쿼리문 실행시 소요 시간을 로그 찍음

 

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
  // 출력방식(콘솔, 파일 등,, 어떤 형식으로 출력할지도 설정..
  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
   <encoder>
     <pattern>
        [%d{yyyy.MM.dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n
      </pattern>
    </encoder>
  </appender>

  //로그종류
  <logger name="jdbc.sqlresultsettable" level="DEBUG"/>
  <logger name="jdbc.resultset" level="OFF"/>
  <logger name="jdbc.audit" level="OFF"/>
  <logger name="jdbc.connection" level="OFF"/>
  <logger name="jdbc.sqlonly" level="OFF"/>
  <logger name="jdbc.sqltiming" level="DEBUG"/>
  
  <!-- turn OFF all logging (children can override) -->
  <root level="INFO">
    <appender-ref ref="console" />
  </root>

</configuration>
반응형