본문 바로가기
IT 공부/자바와 웹 애플리케이션

[Log4j2] - MyBatis 데이터베이스 관련 팁 (feat. slf4j Binding)

by exdus3156 2024. 1. 20.
 

[Log4j2] - Log4j2 개념과 작동 원리 및 사용법 총 정리

1. 로깅 시스템과 Log4j2 라이브러리 로그(log)란 소프트웨어 개발 과정, 혹은 프로그램 작동 시 발생하는 이벤트에 대한 기록을 말한다. 블랙박스로 주행 중, 주차 중에서 발생하는 이벤트를 기록

linocraft.tistory.com

이전 포스팅에서 Log4j2 라이브러리는 xml 파일을 이용해 레벨(Level)을 조정하는 방식으로 로그 수준을 조절할 수 있다고 포스팅했다. 그리고 자바의 여러 단독 라이브러리들 중 꽤 많은 라이브러리들이 Log4j2를 내부적으로 사용하고 있고, 이것이 slf4j Binding 기술을 이용해 개발자가 설정한 로깅을 자동으로 따른다.

마이바티스(MyBatis) 또한 내가 설정한 Log4j2를 그대로 이용할 수 있다. 내부적으로 log factory 객체를 이용해 Log4j2를 바인딩한다. 아래는 공식 문서의 설명이다.

 

JUnit 테스트를 통해 마이바티스가 생성한 Mapper 객체를 실험하고자 한다면 내부적으로 어떻게 쿼리를 만들어 사용하는지 알고 싶을 때가 있다. 이때 마이바티스의 Log4j2 바인딩을 응용한다면 아래와 같이 사용하면 된다.

mapper 패키지 안에 있는 모든 Mapper 객체들을 대상으로 레벨을 TRACE로 조정하면 콘솔에 SQL문을 출력해 디버깅할 수 있다. 마이바티스가 내부적으로 Log4j2 API를 사용하기 때문에 가능한 것이다. 만약 그렇지 않았다면, 마이바티스 라이브러리를 뜯어 고쳐 log.trace()와 같은 메소드를 삽입할 수는 없으므로 어떤 방식으로든 SQL문을 검증하기 어려웠을 것이다.