IT/Framework

Spring boot 2.2.8 - Sql Logging 처리

Normal_One 2020. 6. 28. 16:34

 저번까진 Rest api 서버를 구축해 보았습니다. Mybatis를 통해 훌룡하게 SQL을 조회하여 임직원 정보를 뿌려 주었습니다. 다만 Console 창을 보면 SQL이 재대로 실행되었는 지 확인을 할 수 없습니다. 이러면 Debugging 할 때 몹시 불편하니 log4j를 통해 SQL을 Console창에 띄우도록 해봅시다. 먼저 application.properties를 엽니다. 그리고 driver-class-name 및 url을 변경해 줍니다.

 

# spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy

# spring.datasource.url=jdbc:log4jdbc:oracle:thin:@localhost:1521/**

 

driver-class-name은 위와 같이 변경해주고 url은 jdbc와 db주소 사이에 log4jdbc를 넣어줍니다. 그리고 나서 resources 아래에 log4jdbc.log4j2.properties 및 logback-spring.xml 두 파일을 생성해 줍니다.

 

log4jdbc.log4j2.properties 에는 아래와 같이 넣어줍니다.

 

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

# log4jdbc.dump.sql.maxlinelength=0

 

 아 참고로 #은 주석이므로 실제 넣으실 때는 제거하시기 바랍니다.

그리고 나서 xml에 기존 Spring log 설정과 같이 넣어줍니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8"?>
<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>
cs

 

 

 일단 Console에만 보여주면 되기 때문에 Console 설정만 넣도록 했습니다. 자 이제 마지막으로 pom.xml에 dependency 두 개를 추가해 줍니다.

 

ㅇㅇㅇㅇㅇ
1
2
3
4
5
6
7
8
9
10
        <dependency> 
            <groupId>org.bgee.log4jdbc-log4j2</groupId> 
            <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId> 
            <version>1.16</version> 
        </dependency>
        
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
        </dependency>
cs

 

 위와 같이 jar를 추가해주고 서버를 부팅한 후 이전에 Rest api 만들 때 썼던 /getEmpInfo로 접속해보면 Console창에 아래와 같이 예쁘게 Log가 찍히는 걸 확인할 수 있습니다.