SPRING
[SPRING] Logback와 Log4jdbc을 사용한 쿼리 로그
steadyMan
2021. 11. 21. 23:39
구현환경
- 프레임워크 : 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. 로그 정상출력 확인