- Spring Boot에서 **log4jdbc** 드라이버를 사용하여 데이터베이스 쿼리 로그를 출력하는 방법 - `log4jdbc` 드라이버 설정과 로그 설정 방법

### 1. log4jdbc 의존성 추가

먼저, log4jdbc를 프로젝트에 추가
사용 중인 빌드 도구에 따라 Maven 또는 Gradle 의존성 추가

Maven 의존성

pom.xml 파일에 의존성 추가

<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4</artifactId>
    <version>1.16</version>
</dependency>

#### Gradle 의존성 `build.gradle` 파일에 의존성 추가
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16'

### 2. 데이터베이스 드라이버 설정

의존성 추가 후, application.properties 또는 application.yml 파일에서 log4jdbc 드라이버 설정

spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mariadb://158.180.95.52:3306/insider
spring.datasource.username=insider
spring.datasource.password=insider!@

log4jdbc를 통해 데이터베이스 쿼리가 로그에 출력된다.

3. 로그 설정 추가


로그를 더 구체적으로 관리하기 위해 log4jdbc 로거 설정을 추가한다.
log4j2.xml 설정 파일에 아래와 같은 로거 설정을 추가하여 원하는 수준의 로그를 조정할 수 있다.

<Logger name="java.sql" level="INFO" additivity="false">  
    <AppenderRef ref="console" />  
</Logger>  

<Logger name="jdbc.sqltiming" level="WARN" additivity="false">  
    <AppenderRef ref="console" />  
</Logger>  

<Logger name="jdbc.sqlonly" level="INFO" additivity="false">  
    <AppenderRef ref="console" />  
</Logger>  

<Logger name="jdbc.audit" level="WARN" additivity="false">  
    <AppenderRef ref="console" />  
</Logger>  

<Logger name="jdbc.resultset" level="WARN" additivity="false">  
    <AppenderRef ref="console" />  
</Logger>  

<Logger name="jdbc.resultsettable" level="WARN" additivity="false">  
    <AppenderRef ref="console" />  
</Logger>

4. log4jdbc 로그 설정 레벨 상세 설명


  • jdbc.sqlonly: SQL 문을 로깅
  • jdbc.sqltiming: SQL 문과 실행 시간을 함께 표시
  • jdbc.audit: ResultSet 제외 모든 JDBC 호출을 로깅하며, 로그 양이 많아 권장되지 않음
  • jdbc.resultset: 모든 JDBC 호출과 ResultSet을 로깅하여 로그 양이 많아 권장되지 않음
  • jdbc.resultsettable: 조회된 SQL 결과를 테이블 형태로 표시
  • jdbc.connection: 데이터베이스 연결과 해제 관련 정보를 로깅

5. 로깅 레벨 선택 가이드


로그 레벨 설정은 개발 단계에 따라 조정할 수 있다

  • DEBUG / INFO: 개발 중 로그를 추적할 때 유용하다
  • WARN: 중요한 경고성 로그만 표시한다
  • ERROR / FATAL: 심각한 문제나 에러 로그만 표시하여 프로덕션 환경에서 사용하기 적합하다

예를 들어, WARN으로 설정하면 그보다 낮은 DEBUGINFO 로그는 출력되지 않는다


이 설정으로 log4jdbc를 활용하여 데이터베이스 쿼리와 JDBC 호출 정보를 효과적으로 모니터링할 수 있다.