lombok과 slf4j 와 logback - horoyoii/simple-load-balancer GitHub Wiki

1. slf4j

Simple Logging Facade for Java

  • 자바에는 logging를 위한 많은 라이브러리가 있다. java.util.logging / log4j / log4j2 / logback
  • slf4j는 Client에게 간편하고 일관된 logging interface를 제공해준다.
  • 로깅에 대한 파사드 패턴 구현체로서 slf4j에서 제공되는 로깅 API를 사용하여 일관된 코드 사용이 가능
  • 파사드이기에 단독으로 사용되지 않고, 구현체(서브시스템)와 함께 사용된다.

스크린샷, 2020-04-09 14-12-23 출처

2. logback

  • slf4j와 자주 함께 사용되는 로그 프레임워크
  • 나의 경우 lombok + slf4j + logback 조합을 사용

3. 사용법

1. gradle dependency 추가

    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'

2. logback configuration 파일

스크린샷, 2020-04-09 14-01-58

아래의 logback.xmlmain/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>

3. 사용

  • lombock의 @Slf4j annation을 추가한다.
import lombok.extern.slf4j.Slf4j;

@Slf4j
class Test{ ...
  • 아래와 같이 사용가능.
log.info("Start running on PORT {}", this.port);
⚠️ **GitHub.com Fallback** ⚠️