본문 바로가기
WEB/spring

[Spring] Log4j 설정하기(log4jdbc-log4j2) - MySql, mariaDB

by baam 2022. 6. 24.

MyBatis는 내부적으로 JDBC의 PreparedStatement를 이용해서 SQL을 처리한다.

따라서 SQL에 전달되는 파라미터는 JDBC에서와 같이 '?'로 치환되어서 처리된다.

SQL을 변환해서 PreparedStatement에 사용된 '?'r가 어떤 값으로 처리되었는지 확인하는 기능을 추가해야 한다.

 

1. 먼저 Maven Repository에 접속해서 bgee를 검색 후 pom.xml에 추가한다.

https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1/1.16

사이트 화면

<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1 -->
<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
    <version>1.16</version>
</dependency>

 

 

2.  프로젝트에서 로그 설정 파일을 추가한다.

properties 파일명 및 추가할 경로

MySql의 경우 아래와 같이 한 줄만 추가하면 되지만,

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator

MariaDB 사용 시 properties 파일에 아래와 같이 한 줄을 더 추가한다.

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.drivers=org.mariadb.jdbc.Driver

 

 

3. root-context.xml 내부의 JDBC 연결 정보를 수정한다.

 

[수정 전]

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <property name="driverClassName" value="org.mariadb.jdbc.Driver"></property>
   <property name="url" value="jdbc:mariadb://localhost:3306/springbasic?useUnicode=true&amp;characterEncoding=utf8"></property>
   <property name="username" value="testid"></property>
   <property name="password" value="t1234"></property>
</bean>

 

[수정 후]

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
   <property name="url" value="jdbc:log4jdbc:mariadb://localhost:3306/springbasic?useUnicode=true&amp;characterEncoding=utf8"></property>
   <property name="username" value="testid"></property>
   <property name="password" value="t1234"></property>
</bean>

 

 

4. 프로젝트에 logback.xml 파일을 추가한다.

logback.xml 추가 경로

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <!-- log4jdbc-log4j2 -->
    <logger name="jdbc.sqlonly" level="INFO"/>
    <logger name="jdbc.sqltiming" level="INFO"/>
    <logger name="jdbc.audit" level="WARN"/>
    <logger name="jdbc.resultset" level="INFO"/>
    <logger name="jdbc.resultsettable" level="INFO"/>
    <logger name="jdbc.connection" level="INFO"/>
</configuration>

 

 

5. Test를 실행해보면 다음과 같이 쿼리 문과 select 결과를 확인할 수 있다.

실행한 쿼리문 확인
쿼리 조회 결과 확인

 

댓글