MyBatis 는 내부 로그 팩토리를 사용하여 로깅 정보를 제공한다. 내부 로그 팩토리는 로깅정보를 다른 로그 구현체 중 하나에 전달한다.
로깅 솔루션은 내부 마이바티스 로그 팩토리의 런타임 체크를 통해 선택된다. 마이바티스 로그 팩토리는 가능하면 첫번째 구현체를 사용할 것이다(위 로깅 구현체의 나열 순서는 내부적으로 선택하는 우선순위이다). 만약 마이바티스가 위 구현체중 하나도 찾지 못한다면 로깅을 하지 않을 것이다.
이 포스트에서는 Log4J를 통한 로그 세팅 방법에 대해 기술한다.
log4jdbc 의존성 추가 (Gradle 기준)
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16'
datasource 관련 설정을 아래와 같이 수정
# driver-class-name: org.mariadb.jdbc.Driver
# url: jdbc:mariadb://localhost:3306/dbname
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mariadb://localhost:3306/dbname
로그 관련 설정
properties 파일을 사용하는 경우
# 로그 관련 설정
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
logback.xml 파일을 사용하는 경우
<configuration>
<logger name="jdbc.sqlonly" level="OFF"/>
<logger name="jdbc.sqltiming" level="info"/>
<logger name="jdbc.resultsettable" level="info"/>
<logger name="jdbc.audit" level="OFF"/>
<logger name="jdbc.resultset" level="OFF"/>
<logger name="jdbc.connection" level="OFF"/>
</configuration>
- 로그 설정 상세내용
- jdbc.sqlonly - SQL 문을 보여준다.
- jdbc.sqltiming - SQL 문과 이 SQL 문을 수행하는 시간(ms)을 같이 보여준다.
- jdbc.audit - ResultSet 을 제외한 모든 JDBC 호출 정보를 로그로 보여준다. 상당히 많은 양의 로그가 나오기 때문에 권장하지 않음.
- jdbc.resultset - ResultSet 을 포함한 모든 JDBC 호출 정보를 로그로 보여준다. audit 처럼 많은 로그가 나오기 때문에 권장하지 않음.
- jdbc.resultsettable - SQL 의 결과로 조회된 데이터를 table 형태로 로그를 보여준다.
- jdbc.connection - DB 연결, 연결 해제와 관련된 로그를 보여준다
- 속성값 내용
- ex) warn 으로 설정한 경우 이전 레벨인 debug, info 로그는 출력하지 않음.
- 따라서 개발하면서 계속 로그를 추적하고 싶은 경우 debug, info 로 설정하는 편을 권장.
- off - 사용하지 않음
- info - 정보성 로그
- warn - 경고성 로그
- error - 에러 로그
- fatal - 심각한 문제 로그
log4jdbc.log4j2.properties 생성 및 설정
- src/main/resources 폴더 하위에 log4jdbc.log4j2.properties 이름으로 파일 생성 후 아래 내용 기재.
- maxlinelength 부분은 SQL 문을 몇줄까지 출력할지를 지정할 수 있으며, 0 이면 무제한.
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
spring.profiles.active 를 통한 환경별 설정 분기
logback-local.xml / logback-dev.xml / logback-qa.xml / logback-production.xml 로 각 환경별 파일을 생성한다.
그리고 application.properties (또는 application.yml) 파일에 아래와 같이 환경별 파일을 참조하도록 명시한다.
logging:
config: classpath:logback-${spring.profiles.active}.xml
'Framework > Spring' 카테고리의 다른 글
[Spring] Swagger 3 (0) | 2022.01.11 |
---|---|
[Spring] Filter & Interceptor (0) | 2021.12.22 |
[Spring] Get Request 의 파라미터를 객체로 받을 때의 Case Convert (0) | 2021.12.15 |
[Spring] MyBatis 연동 (0) | 2021.12.06 |
[Spring] Unit Test (0) | 2021.12.06 |