처음부터 차근차근
Logback : 로그 색상 수정 본문
logback 설정 파일이 적용된 로그를 봤더니
spring에서 기본적으로 적용됐던 로그 색상이 사라졌다.
로그의 색상을 수정하려면 아래와 같이 logback 설정 파일을 수정하면 된다.
1. conversion rule 추가
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
....생략....
</configuration>
2. pattern 부분 수정
<pattern>%clr([%d{yyyyMMdd HH:mm:ss.SSS}]){magenta} %clr([%-5level]) [%thread] %clr(%logger){cyan} %msg%n</pattern>
그 결과
다시 색상이 알록달록하게 변했다.
원리
spring-boot-버전.jar / org.springframework.boot / logging / logback 안에 있는 logback 설정 파일을 보면 원리를 알 수 있다.
default.xml
색상 변경을 하는 키워드 clr이 conversionRule 태그 안에 선언된 것을 볼 수 있다.
<?xml version="1.0" encoding="UTF-8"?>
<!--
Default logback configuration provided for import
-->
<included>
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<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="CONSOLE_LOG_CHARSET" value="${CONSOLE_LOG_CHARSET:-${file.encoding:-UTF-8}}"/>
<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}}"/>
<property name="FILE_LOG_CHARSET" value="${FILE_LOG_CHARSET:-${file.encoding:-UTF-8}}"/>
<logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>
<logger name="org.apache.catalina.util.LifecycleBase" level="ERROR"/>
<logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/>
<logger name="org.apache.sshd.common.util.SecurityUtils" level="WARN"/>
<logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/>
<logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="ERROR"/>
<logger name="org.hibernate.validator.internal.util.Version" level="WARN"/>
<logger name="org.springframework.boot.actuate.endpoint.jmx" level="WARN"/>
</included>
CONSOLE_LOG_PATTERN 부분을 보면 %clr 이 사용되는 것을 볼 수 있는데,
%clr(LOG_DATEFORMAT_PATTERN){faint} 이런식으로 정의를 한다.
faint는 검정색을 의미하고, {} 괄호 안에 색상을 적으면 색상을 지정하는 것을 알 수 있다.
clr에서 지원되는 색상은
blue, cyan, faint, green, magenta, red, yellow 이다.
log level은 level마다 색상을 달리해야하는데(예를 들어 error는 빨간색, info는 파란색),
level에 해당되는 부분은 %clr(~)이런식으로 '{색상}'을 안붙이고 표기하면 level별로 색상이 변한다.
base.xml
base.xml은 default.xml을 include 한다.
<?xml version="1.0" encoding="UTF-8"?>
<!--
Base logback configuration provided for compatibility with Spring Boot 1.1
-->
<included>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</included>
참고 : https://oingdaddy.tistory.com/257
Logback 출력 로그 색상 변경하기 (with clr)
중요한 일은 아니지만 개발환경을 만드는 입장에서 어떻게 하면 조금 더 로그를 가독성이 좋게 보여줄 수 있을까 고민을 했고 출력 로그의 색상을 바꿔보기로 하였다. 바쁜 사람을 위해 결론부
oingdaddy.tistory.com
'Framework > Spring' 카테고리의 다른 글
Builder pattern과 @Builder (0) | 2022.07.29 |
---|---|
스프링 이니셜라이즈를 이용한 스프링 부트 프로젝트 생성 방법 (0) | 2022.07.12 |
@DeleteMapping과 @PutMapping (1) | 2022.05.24 |
Swagger (0) | 2022.05.06 |
Logback (0) | 2022.05.05 |