LogBack (slf4j)

Logging Framework, Logback

  • Logback은 slf4j의 native 구현체
  • Logback은 logback-core, logback-classic, logback-access 3개의 모듈로 구성
  • core는 classic, access의 모듈

name

  • Logger들은 이름 기반으로 생성
  • LoggerFactory.getLogger(“NAME”)으로 Logger를 호출
  • NAME에 대한 유일한 instance 반환, 여러번 호출해도 똑같은 객체
  • 흔히 Class 객체 넘겨주면 ,PackageName + ClassName으로 구성
  example.logback.level.Grandparents
  example.logback.level.grandparents.Parents
  example.logback.level.grandparents.parents.Children

    ...
  private static final Logger logger = LoggerFactory.getLogger(Grandparents.class);
  private static final Logger logger = LoggerFactory.getLogger(Parents.class);
  private static final Logger logger = LoggerFactory.getLogger(Children.class);

...
// 각각 클래스마다 구현
public void run() {
    logger.trace("trace");
    logger.debug("debug");
    logger.info("info");
    logger.warn("warn");
    logger.error("error");
}

위처럼 Class GrandParents, Parents, Children을 위와 같은 구조로 생성하고 아래처럼 Logger를 Class 마다 생성하면 3개의 Logger가 Full Package+ClassName으로 생성됨

Level

  • Logger들은 Tree Hierarchy 구조로 Level을 적용 받을 수 있음
LogBack.xml
 <?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
        </layout>
    </appender>

    <logger name="example.logback.level.grandparents" level="TRACE"/>
    <logger name="example.logback.level.grandparents.parents.children" level="INFO"/>
    <root level="DEBUG">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

여기서 root는 root logger를 말한다.

Level

  1. trace
  2. debug
  3. info
  4. warn
  5. error
  • 위 처럼 5단계의 Level 이 존재하고, Trace 선언을 하면 trace 밑으로 debug, info, warn, error 등 모든 level을 포함
  • INFO로 설정되면 info, warn, error 포함

Appender

  • Event 마다 log를 기록하는 기능은 Appender가 처리
  • Logger는 어떤 Appender에 할당되어 처리 되는지가 중요
  • Appender를 설정하더라도 Log 출력에 해당되지 않으면 작동하지 않음
  • Appender는 출력될 형식을 직접 가지고 있지 않고, Layout과 Encoder에 위임
  • ConsoleAppender, FileAppender, RollingFileAppender

Configuration

  • LogBack이 구동될때 LogBack 설정 - LogBack.xml