⚙️ 개발/Spring
log4jdbc
지구용사
2024. 8. 21. 11:13
💻 MySql, MyBatis, Gradle
log4jdbc는 자바 애플리케이션에서 JDBC 드라이버를 사용할 때 SQL문의 실행 로그를 자동으로 기록해주는 라이브러리이다.
1. 의존성 주입
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16'
2. resources 디렉터리에 log4jdbc.log4j2.properties 추가
해당 파일은 JDBC 드라이버의 동작을 사용자가 정의하는 구성 파일이다. 이 파일을 사용하여 드라이버의 로깅 출력, 로그 레벨, 어펜더 및 포맷팅과 같은 것을 제어할 수 있다.
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
log4jdbc.drivers=com.mysql.cj.jdbc.Driver
log4jdbc.auto.load.popular.drivers=false
#log4jdbc
logging.level.jdbc.sqlonly=info
logging.level.jdbc.sqltiming=off
logging.level.jdbc.resultsettable=off
logging.level.jdbc.audit=off
logging.level.jdbc.resultset=off
logging.level.jdbc.connection=off
# jdbc.sqlonly - SQL문을 보여줌
# jdbc.sqltiming - SQL문과 SQL문 수행하는 시간을 같이 보여줌
# jdbc.resultsettable - SQL 의 결과로 조회된 데이터를 table 형태로 로그를 보여줌
# jdbc.audit - ResultSet 을 제외한 모든 JDBC 호출 정보를 로그로 보여줌, 상당히 많은 양의 로그가 나오기 때문에 권장하지 않음.
# jdbc.resultset - ResultSet 을 포함한 모든 JDBC 호출 정보를 로그로 보여줌, audit 처럼 많은 로그가 나오기 때문에 권장하지 않음.
# jdbc.connection - DB 연결, 연결 해제와 관련된 로그를 보여줌
# off - 사용하지 않음
# info - 정보성 로그
# warn - 경고성 로그
# error - 에러 로그
# fatal - 심각한 문제 로그
3. 데이터베이스와 연결 설정을 하기 위해 application.properties 수정
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mysql://localhost:8080
spring.datasource.username=[DB아이디]
spring.datasource.password=[DB비밀번호]
4. resources 디렉터리에 loback-spring.xml 추가
해당 파일은 로그 환경설정을 정의하는 파일이다.
<?xml version="1.0" encoding="UTF-8"?>
<!-- 디버그 모드를 활성화 -->
<configuration debug="true">
<!-- 로그 메시지 인코딩하고 포맷팅 -->
<!-- 로그가 기록된 날짜와 시간 + 로그레벨 + [로그 생성된 클래스 또는 이름] + 실제 로그 메시지 내용 + 줄바꿈 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>UTF-8</charset>
<Pattern>%d %5p [%c] %m%n</Pattern>
</encoder>
</appender>
<!-- 로그가 기록된 날짜와 시간 + 로그레벨 + 실제 로그 메시지 내용 -->
<appender name="console-infolog" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>UTF-8</charset>
<Pattern>%d %5p %m%n</Pattern>
</encoder>
</appender>
<!-- 클래스에서 생성되는 로그의 레벨과 출력을 정의 -->
<logger name="com.waggle" level="DEBUG" appender-ref="console" />
<logger name="jdbc.sqlonly" level="INFO" appender-ref="console-infolog" />
<logger name="jdbc.resultsettable" level="INFO" appender-ref="console-infolog" />
<!-- 모든 로그의 기본 레벨을 설정하는 것으로 로그가 출력되지 않음 -->
<root level="off">
<appender-ref ref="console" />
</root>
</configuration>
🔗 참고 링크