[Spring Boot] 모든 Database SQL 로그 출력
프로그램 할 때 query log가 안보이면 제대로 실행이 되고 있는 건지 디버깅도 힘들고 답답하기 때문에 로그 보는 설정을 먼저 진행하게 됩니다. 오늘 진행하는 작업은 대부분의 Database가 동일한 방법으로 작업이 가능 합니다.
먼저 maven을 이용하여 log4j2를 추가 합니다.
pom.xml
<dependency> <groupId>org.bgee.log4jdbc-log4j2</groupId> <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId> <version>1.16</version> </dependency> |
그리고 추가한 라이브러리가 작동할 수 있도록 application.properties에
spring.datasource.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
를 추가하고 source url에 log4jdbc 를 추가 해줍니다.
application.properties
## PostgreSQL spring.datasource.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy #spring.datasource.url=jdbc:postgresql://localhost:5432/copydb spring.datasource.url=jdbc:log4jdbc:postgresql://localhost:5432/copydb spring.datasource.username=copycoding spring.datasource.password=copy123 |
다른 데이터 베이스를 사용 하는 경우에도 첫 번째 라인인 DriverSpy는 추가해 주고 url 부분을 다음처럼 변경을 합니다.
spring.datasource.url=jdbc:log4jdbc:oracle:thin:@localhost:1521/xe
spring.datasource.url=jdbc:log4jdbc:mariadb://localhost:3306/testdb
spring.datasource.url=jdbc:log4jdbc:mysql://localhost/testdb
그리고 실행을 하면 아래 그림처럼
모든 값들이 정리되지 않고 나오게 되는데 이제 정리를 하기 위한 설정을 추가해 줍니다.
src/main/resources 폴더에 properties 파일을 하나 생성 합니다.
log4jdbc.log4j2.properties
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator log4jdbc.dump.sql.maxlinelength=0 |
src/main/resources 폴더에 추가로 xml 파일을 생성 합니다.
logback.xml
<?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> |
이제 다시 실행을 하고 console을 보게 되면
보기 좋게 형식을 갖추어 출력이 됩니다.
- copy coding -