Spring boot 2.2.8 - Sql Logging 처리
저번까진 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가 찍히는 걸 확인할 수 있습니다.