..

log4jdbc: JDBC 쿼리 로그를 깔끔하게 출력하기

1. log4jdbc란?

log4jdbc는 자바 애플리케이션에서 수행되는 모든 JDBC 호출(SQL 구문, 파라미터, 실행 결과 등)을 로깅하고 디버깅할 수 있게 도와주는 프록시 기반의 라이브러리입니다.

2. 주요 기능

  • SQL 구문 로깅: 바인딩된 파라미터가 채워진 상태의 완성된 SQL문을 출력하여 즉시 쿼리 툴에서 돌려볼 수 있게 해줍니다.
  • 성능 모니터링: 각 SQL문이 실행되는 데 걸린 시간(Execution Time)을 함께 출력하여 병목 지점을 찾는 데 유용합니다.
  • 결과셋 출력: 쿼리 실행 결과로 반환된 테이블 데이터를 보기 좋게 로그로 찍어줍니다.

3. 동작 방식

애플리케이션과 실제 DB 드라이버 사이에서 프록시(Proxy) 역할을 수행하며 쿼리 요청을 낚아채어(Hooking) 기록한 뒤, 원래의 드라이버에게 요청을 전달합니다.

graph LR;
    App[Application] --> L4J[log4jdbc Proxy];
    L4J --> Driver[Real DB Driver];
    L4J -- "Log SQL/Params" --> Console[Console/Logback];

    style L4J fill:#f96,stroke:#333

4. 설정 방법 (Spring Boot 기준)

기존 JDBC URL 앞에 log4jdbc 키워드만 추가해 주면 간단히 적용됩니다.

  • AS-IS: jdbc:mysql://localhost:3306/mydb
  • TO-BE: jdbc:log4jdbc:mysql://localhost:3306/mydb

복잡한 쿼리가 난무하는 실무 환경에서 어떤 쿼리가 어떤 인자값으로 실행되는지 확인하는 가장 확실한 방법은 log4jdbc를 사용하는 것입니다.