0. log4jdbc-log4j2란?
MyBatis는 내부적으로 PreparaedStatement를 이용해서 SQL문을 처리하는데, 이 때 파라미터는 '?'로 치환된다.
이 치환된 '?'를 로그로 확인하기 위한 라이브러리이다.
1. 라이브러리 설치
<!-- pom.xml (maven)-->
<!-- log4jdbc-log4j2- -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</dependency>
// gradle
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
testImplementation 'ch.qos.logback:logback-classic:1.4.14'
2. 설정
application.yml에서 설정을 해준다.
기존의 driver-class-name을 'com.mysql.cj.jdbc.Driver'에서 ney.sf.log4jdbc.sql.jdbcapi.DriverSpy
url을 jdbc:mysql://~~에서 jdbc:log4jdbc:mysql://~~으로 바꿔준다.
spring:
datasource:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://localhost:3306/example
username: root
password: 1234
log4jdbc.log4j2.properties
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
설명:
log4jdbc.log4j2.properties 파일의 설정은 Log4jdbc를 사용하여 JDBC 호출을 로깅할 때 사용되는 구성입니다. 이 파일에서 설정하는 주요 항목들의 의미는 다음과 같습니다:
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator: 이 설정은 Log4jdbc가 SQL 로깅을 처리하기 위해 사용할 로깅 라이브러리의 구현체를 지정합니다. 여기서 net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator는 SLF4J를 통해 로깅을 수행하도록 지정하는 것으로, Log4jdbc가 SQL 문과 그 실행 결과를 SLF4J API를 사용하여 로그로 기록하게 합니다.
log4jdbc.dump.sql.maxlinelength=0: 이 설정은 로그에 기록되는 SQL 문의 최대 길이를 지정합니다. 0으로 설정된 경우, SQL 문의 길이에 제한이 없음을 의미하며, SQL 문이 아무리 길어도 전체가 로그에 기록됩니다. 이는 개발 중에 SQL 문의 정확한 형태를 확인하고자 할 때 유용할 수 있습니다.
이러한 설정을 통해 개발자는 애플리케이션에서 실행되는 SQL 쿼리를 보다 세밀하게 모니터링하고 디버깅할 수 있습니다.
실제 업무를 하면서 로그가 되게 중요하다는 것을 배웠다.
이거 외에도 log4j2.xml 설정 방법 등 로그에 대해서도 공부해야 되는 것들이 많다고 배웠다.
현재 공부하고 있는 내용을 마치면 로그 관련 공부도 해야지.
화이팅!
'Spring' 카테고리의 다른 글
[JWT] JwtFilter (1) | 2024.11.20 |
---|---|
[JWT] Security Config 6.x.x (1) | 2024.11.19 |
[JWT] 프로젝트 생성1 (0) | 2024.11.18 |
POI - 엑셀 라이브러리 (0) | 2024.06.10 |
[Spring] RestTemplate(서버간 데이터 통신) (0) | 2024.04.01 |