JDBC 와 MYSQL 연동하기 8) log4jdbc 적용하기

작성: 2021.04.17

수정: 2021.04.17

읽는시간: 00 분

Programming/JPA ⁄ Spring

반응형

기존에 oracle에서 쓰던 설정을 그대로 가져왔더니 log4 설정이 제대로 먹히지 않았습니다.

그래서 몇가지 수정이 필요했습니다.

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

위의 log4jdbc를 사용합니다.

  1. 데이터베이스 접속 정보 수정
#driverClassName=com.mysql.cj.jdbc.Driver
driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
#url=jdbc:mysql://localhost:3306/jsp
url=jdbc:log4jdbc:mysql://localhost:3306/jsp

위의 주석 처리된 부분들이 각각 log4jdbc 적용 전이며, 아래 부분이 적용 후 입니다.

  1. log4jdbc.log4j2.properties 생성하기

log4j2.xml 설정파일이 있는 동일한 디렉터리 ( src/main/resources) 에 생성합니다.

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

위의 한줄만 적어줍니다.

  1. log4j2.xml 파일 수정
<?xml version="1.0" encoding="UTF-8"?>
<!-- appender : where -->
<!-- layout : how -->
<!-- message : what -->
<!-- logger : who -->
<!-- logging event level : logger가 메시지를 기록할 지 여부를 결정하는 기준. -->
<!-- debug -> info -> warn -> error -> fatal -->
<!-- logger에 설정된 이벤트 등급 이상의 이벤트만 기록. -->

<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="[%t] %-5level %logger{1.} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="kr.or.ddit" level="info" additivity="false">
      <AppenderRef ref="Console"/>
    </Logger>
    <Logger name="jdbc.sqltiming" level="debug" additivity="false">
      <AppenderRef ref="Console"/>
    </Logger>
    <Logger name="jdbc.resultsettable" level="debug" additivity="false">
      <AppenderRef ref="Console"/>
    </Logger>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

저는 위와 같은 설정을 유지하고 있습니다. 주석을 확인하고 본인에게 맞는 설정으로 사용하시면 됩니다.

img

이제 쿼리를 실행할때마다 로그를 확인 할 수 있어서 디버깅 하기가 한결 수월해 졌습니다.

반응형