0. 로그가 흰색이면...

보기가 힘들다.
이게 인텔리제이에서 보면 그나마 나은데, 배포된 서버로 들어가 로그를 볼려고 치면 정말 구분히 힘들어진다. 이를 위해
로그 레벨 별로 색깔을 적용하여 가독성을 높이려 한다.
1. 적용 방법
(1) 파일 구조 및 의존성 삽입

resources 부분에 logBack을 둔다. 이후 로깅과 실제 구현 코드 간의 관심사 분리를 위해 @SLF4J
라이브러리를 삽입한다. 이 라이브러리를 쓰지 않으면 로그를 쓰고 싶은 모든 클래스마다 Logger
객체를 주입 받아야 한다. 이는 객체간의 결합도를 높이고, Logger
기능 자체의 유연성도 줄인다. (처음엔 Log-Back 라이브러리를 쓰다가 Log4j로 바꾸고 싶을 때 @SL4FJ
를 안 쓴다면 모든 Logger 멤버를 바꿔줘야 한다;;)
@SL4FJ
는 Logger의 추상화 인터페이스이다. 이를 활용하면 구현체 중 아무거나 활용이 가능하다. 또한 어노테이션 형태라서 관심사 분리도 되어서 좋다.
(2) logback.xml 구성
<configuration>
<property name="CONSOLE_LOG_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) [%thread] %cyan(%logger{36}) - %highlight(%msg) %n"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
위는 로그를 커스터마이징 할 수 있는 xml 페이지 이다.
<Configuration>
은 해당 XML이 설정 파일임을 나타내는 태그 이고<property>
는 로그 패턴을 설정하는 태그 이다.<appender>
: 로그 출력에 대한 설정이다. ConsoleAppender를 쓰면 터미널에 로그가 출력된다.<root>
는 로그가 찍히는 레벨에 대한 설정이다.
(3) 결과 보기

2. 원리
로그가 변환되는 과정은 다음과 같다.
- 1️⃣ log.info()가 실행된다.
- 2️⃣ SLF4J가 logback.xml의 설정을 확인한다.
- 3️⃣ 설정한 대로 출력한다.
0