MDC를 추가하기 위해 기본 로깅 형식을 알아야 했는데 MDC를 추가하기도 전에 이상하게 포맷이 찍혀서 작업을 진행하지 못했다.
기본 로깅형식 정보는 DefaultLogbackConfiguration 파일 혹은 spring-boot-x.y.z.jar 의 org.springframework.boot.logging.logback 아래에 default.xml에 정의 되어 있다.
class DefaultLogbackConfiguration {
private static final String CONSOLE_LOG_PATTERN = "%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} "
+ "%clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} "
+ "%clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} "
+ "%clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}";
private static final String FILE_LOG_PATTERN = "%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} "
+ "${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}";
private static final String MAX_FILE_SIZE = "10MB";
사실 default.xml 파일이 한줄로 쭉 되어 있어서 얘를 가져다 썼더니아래와 같이 이상하게 찍힌다.
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
왜냐하면 java 파일의 형식과 달리 치환할 수 있도록 ${이름: -기본값}의 형태로 쓰여져 있기 때문이다.
결국 코드를 이해하고 나서야 아래와 같이 기본 형식을 알아낼 수 있었다.
application.yml
console: '%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx'
file: '%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } --- [%t] %-40.40logger{39} : %m%n%wEx'
%clr이 뭔가 했더니 콘솔에서 색상(color)을 찍기 위한 문법이었다. 레퍼런스에 잘 나타나 있다.
https://www.logicbig.com/tutorials/spring-framework/spring-boot/logging-console-pattern.html
문서를 보면 잘 설명되어 있다.
'Programing > Framework' 카테고리의 다른 글
React with Spring Boot 프로젝트 구조 잡기 (0) | 2018.11.14 |
---|---|
[Spring] WebMvcConfigurerAdapter가 deprecate 되었네, 해결책은? (0) | 2018.10.18 |
[스프링] ReloadableResourceBundleMessageSource 관련한 테스트 에러 (0) | 2018.02.27 |
[스프링] URI 만드는 구성 요소 UriComponentsBuilder (0) | 2018.02.27 |
[Spring] 특정 타입의 객체를 Request 스코프로 받기 (0) | 2016.10.18 |