정의
- Java 애플리케이션에서 DB 쿼리를 로깅하기 위한 도구 중 하나
- 설정 시 SQL 문장과 DB 연결 관련 정보가 Spirng Boot의 로그로 출력
특징
- SQL 추적: log4jdbc는 JDBC 드라이버를 래핑하여 모든 SQL 문장을 추적하고 로그로 기록합니다. 이를 통해 애플리케이션이 데이터베이스와 어떻게 상호작용하는지를 상세하게 파악할 수 있습니다.
- 파라미터 바인딩 추적: log4jdbc는 SQL 파라미터 바인딩도 추적하고 로그로 기록합니다. 따라서 SQL 문장에 전달된 파라미터 값도 확인할 수 있습니다.
- 다중 데이터베이스 지원: log4jdbc는 다양한 데이터베이스에 대한 JDBC 드라이버를 지원합니다. 따라서 여러 종류의 데이터베이스에서도 사용할 수 있습니다.
사용 방법
1. 의존성 추가(Gradle)
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
2. src/resources에 log4jdbc.log4j2.properties 파일 추가 (yaml 형식 불가능)
# Slf4j를 통해 log4jdbc 로그를 출력하도록 설정
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
# 로그에 출력되는 SQL 쿼리의 최대 길이 설정 (0인 경우 무한대)
log4jdbc.dump.sql.maxlinelength=0
# SQL 유형별로 로그 출력 여부 설정
log4jdbc.dump.sql.select=true/false
log4jdbc.dump.sql.insert=true/false
log4jdbc.dump.sql.update=true/false
log4jdbc.dump.sql.delete=true/false
# log4jdbc 로그 파일 경로 설정
log4jdbc.dump.sql.logfile=myapp.log
3. application.yml 이나 application.properties에서 DB 연결 정보 수정 (url, driverClassName)
# 기본
spring:
datasource:
url: jdbc:mariadb://{호스트}:{포트번호}/{DB명}
driverClassName: org.mariadb.jdbc.Driver
# log4jdbc 적용
spring:
datasource:
url: jdbc:log4jdbc:mariadb://{호스트}:{포트번호}/{DB명}
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
가능한 옵션들
<!-- 해당 로그를 출력하지 않도록 설정하고 싶으면 level에 OFF 적용 -->
<!-- 커넥션 open close 이벤트 로그 -->
<logger name="jdbc.connection" level=""/>
<!-- SQL문만에 대한 로그 -->
<logger name="jdbc.sqlonly" level=""/>
<!-- SQL문에 대한 로그 + 해당 SQL을 실행시키는데 수행된 시간 정보 로그 -->
<logger name="jdbc.sqltiming" level=""/>
<!-- ResultSet을 제외한 모든 JDBC 호출 정보 로그 -->
<logger name="jdbc.audit" level=""/>
<!-- ResultSet을 포함한 모든 JDBC 호출 정보 로그 -->
<logger name="jdbc.resultset" level=""/>
<!-- SQL 결과 조회된 데이터의 table을 로그로 남기고 싶은 경우 -->
<logger name="jdbc.resultsettable" level=""/>
'Spring' 카테고리의 다른 글
Spring https 설정 (0) | 2023.12.22 |
---|---|
Multipart (0) | 2023.12.20 |
logback-spring.xml 로그 파일 level별 설정 문제 (0) | 2023.09.13 |
Logback (0) | 2023.09.12 |
의존성 주입 방식 (0) | 2023.05.25 |
댓글