Log/Logback Manual

Chapter 6. logback layouts

우라릭 2022. 10. 3. 16:18

본 문서는 https://logback.qos.ch/manual/introduction.html을 번역/요약/정리/사견 추가한 글입니다.

1. Layout은 뭘까?

Layout은 로깅 이벤트를 문자열로 바꿔주는 logback component입니다. Layout 인터페이스의 format()메소드가 이벤트를 받아 문자열을 반환합니다.

2. Logback-classic

logback classic은 ILoggingEvent만 처리합니다.

2.1. custom Layout 만들기

기본 기능들을 구현해놓은 LayoutBase를 상속받은 뒤, doLayout()만 구현해주자

package chapters.layouts;

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.LayoutBase;

public class MySampleLayout extends LayoutBase<ILoggingEvent> {

  public String doLayout(ILoggingEvent event) {
    StringBuffer sbuf = new StringBuffer(128);
    sbuf.append(event.getTimeStamp() - event.getLoggingContextVO.getBirthTime());
    sbuf.append(" ");
    sbuf.append(event.getLevel());
    sbuf.append(" [");
    sbuf.append(event.getThreadName());
    sbuf.append("] ");
    sbuf.append(event.getLoggerName();
    sbuf.append(" - ");
    sbuf.append(event.getFormattedMessage());
    sbuf.append(CoreConstants.LINE_SEP);
    return sbuf.toString();
  }
}

-> 10489 DEBUG [main] com.marsupial.Pouch - Hello world.

2.1.1. custom layout 설정하기

FileAppender와 이 서브클래스들은 encoder를 받습니다. 그렇게 하기 위해 커스텀 layout을 LayoutWrappingEncoder로 감쌀 필요가 있습니다.
    <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
      <layout class="chapters.layouts.MySampleLayout" />
    </encoder>

2.2. PatternLayout

PatternLayout은 이벤트를 패턴에 맞게 문자열로 변환시켜 줍니다. 패턴은 C언어의 printf()의 방식과 유사합니다. 

자세한 패턴은 문서를 참고해 주세요.

2.3. HTMLLayout

로그들을 HTML 포맷으로 만들어줍니다.

2.4. Log4j XMLLayout

log4j.dtd에 호환되는 포맷으로 생성한다는 듯

 

 

 

'Log > Logback Manual' 카테고리의 다른 글

Chapter 8. logback Mapped Diagnostic Contexts  (0) 2022.10.06
Chapter 7. logback filter  (0) 2022.10.05
Chapter 5. logback encoders  (0) 2022.10.03
Chapter 4. logback appenders  (0) 2022.10.02
Chapter 3. logback 설정  (0) 2022.10.02