lombok과 slf4j 와 logback - horoyoii/simple-load-balancer GitHub Wiki
Simple Logging Facade for Java
- 자바에는 logging를 위한 많은 라이브러리가 있다. java.util.logging / log4j / log4j2 / logback
- slf4j는 Client에게 간편하고 일관된 logging interface를 제공해준다.
- 로깅에 대한 파사드 패턴 구현체로서 slf4j에서 제공되는 로깅 API를 사용하여 일관된 코드 사용이 가능
- 파사드이기에 단독으로 사용되지 않고, 구현체(서브시스템)와 함께 사용된다.
- slf4j와 자주 함께 사용되는 로그 프레임워크
- 나의 경우 lombok + slf4j + logback 조합을 사용
compileOnly "org.projectlombok:lombok:1.16.16"
annotationProcessor 'org.projectlombok:lombok:1.18.8'
implementation 'ch.qos.logback:logback-classic:1.1.2'
implementation 'ch.qos.logback:logback-core:1.1.2'
implementation 'org.slf4j:slf4j-api:1.7.10'
아래의 logback.xml을 main/resources 아래에 위치
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %magenta(%-4relative) --- [ %thread{10} ] %cyan(%logger{20}) : %msg%n </pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>labatory.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>labatory.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-4relative --- [ %thread{10} ] %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<logger name="org.springframework" level="info"/>
<logger name="org.hibernate" level="debug"/>
<root level="debug">
<appender-ref ref="CONSOLE"/> <!-- Console에 로그를 출력하고자 할 때 사용 -->
<appender-ref ref="FILE"/> <!-- File로 로그를 남기고자 할 때 사용 -->
</root>
</configuration>
- lombock의 @Slf4j annation을 추가한다.
import lombok.extern.slf4j.Slf4j;
@Slf4j
class Test{ ...
- 아래와 같이 사용가능.
log.info("Start running on PORT {}", this.port);