IT/spring

[Spring Boot] SQL 로그 설정 (Log4jdbc) Gradle 적용시키기

토희 2022. 12. 25. 14:28
728x90

Log4jdbc Log4j를 JDBC와 연결하여 사용하기 위해 만들어진 오픈소스 프로젝트이다

Log4jdbc는 예전 버전이고 Log4j2와 Slf4j와 연동되는 버전이 나왔다

 

Log4jdbc-log4j2 적용법

1. 의존성 주입

- build.gradle에 Log4jdbc 의존성을 추가한다

나는 밑에 처럼 추가했고

dependencies {
    implementation group: 'org.bgee.log4jdbc-log4j2', name: 'log4jdbc-log4j2-jdbc4.1', version: '1.16'
}

구글링 하면은 아래와 같이 많이 나옴

dependencies {
	implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
}

둘중 하나를 추가하면 된다!!

 

2. log4jdbc.log4j2.properties 생성

- resources폴더 안에 log4jdbc.log4j2.properties 생성하고

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0

위의 코드 추가

 

 

3. DB 설정 수정

resources폴더 안에 application.properties에 DB설정을 수정해준다

spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy

spring.datasource.url = jdbc:log4jdbc:mysql://{URL:port}/{Schema}?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul
spring.datasource.username ={ID}
spring.datasource.password ={PW}

driver-class-name 추가해주고,

기존에는 ur이 jdbc:mysql~~ 이렇게 되어있었을텐데, log4jdbc를 추가해준다

 

그리고 application.properties 안에 출력할 정보에 대한 설정을 해준다

나는 아래와 같이 설정해줬음

# ========== log4jdbc  ==========

# 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 - 심각한 문제 로그

logging.level.jdbc.sqlonly=off
logging.level.jdbc.sqltiming=info
logging.level.jdbc.resultsettable=info
logging.level.jdbc.audit=off
logging.level.jdbc.resultset=off
logging.level.jdbc.connection=off

# ================================

 

 

그리고 서버 구동면 아래같이 DB에 대한 로그가 찍힌다

내가 설정한대로 sqltiming과 resultsettable에 대한 정보가 뜬다

 

 

 

혹시 아래와 같이 오류가 나면 

 

loading class `com.mysql.jdbc.driver'. this is deprecated. the new driver class is `com.mysql.cj.jdbc.driver'. the driver is automatically registered via the spi and manual loading of the driver class is generally unnecessary

 

https://velog.io/@hae111/ERRORLoading-class-com.mysql.jdbc.Driver.-This-is-deprecated.-The-new-driver-class-is-com.mysql.cj.jdbc.Driver

 

[ERROR]Loading class 'com.mysql.jdbc.Driver'. This is deprecated. The new driver class is 'com.mysql.cj.jdbc.Driver'.

Loading class 'com.mysql.jdbc.Driver'. This is deprecated. The new driver class is 'com.mysql.cj.jdbc.Driver'. logback 실행하다가 만난 오류 LogBack 장점 Log4j를 만든 개발자 Ceki Gülcü가 Log4j를 기반으로 더 빠른 속도와 더 적

velog.io

요거 참고해서  log4jdbc.log4j2.properties를 아래와 같이 변경해준다

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

 

 

728x90