Logback 아키텍처
- logback-core : 다른 두 모듈의 기본이다.
- logback-classic : logback-core를 extend 하였다. log4j을 개선한 것이다. SLF4J API를 기본적으로 구현하여 JDK 1.4에 소개된 log4j 또는 java.util.logging과 같은 다른 로깅 시스템과 로그백간에 쉽게 전환을 할 수 있다.
- logback-access : 서블릿 컨테이노와 통합되어 HTTP-access 로그 기능을 제공한다.
Logback 아키텍처 - Logger, Appenders, Layouts
Logger context
Logger rootLogger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
다른 로거들도 위와 같이 org.slf4j.LoggerFactory 클래스에 이름을 넘겨주면 로거를 가져 올 수 있다.
Logging level
package org.slf4j;
public interface Logger {
// Printing methods:
public void trace(String message);
public void debug(String message);
public void info(String message);
public void warn(String message);
public void error(String message);
}
로깅 레벨에는 다음과 같이 5가지 단계가 있다.
로거에 level을 설정하지 않으면, 부모의 로깅 레벨을 사용한다. 아래 예제를 살펴보자.
Logger name | Assigned level | Effective level |
---|---|---|
root | DEBUG | DEBUG |
X | none | DEBUG |
X.Y | none | DEBUG |
X.Y.Z | none | DEBUG |
Logger name | Assigned level | Effective level |
---|---|---|
root | DEBUG | DEBUG |
X | INFO | INFO |
X.Y | none | INFO |
X.Y.Z | ERROR | ERROR |
Basic Selection Rule
Appenders
Logback에 또 다른 기능은 로깅 요청을 다양한 곳에서 출력할 수 있는 것이다. logback에서는 output하는 곳을 Appender라고 부른다. Appender의 종류에는 Console, 파일, 원격 소켓 서버, MySQL, PostgresSQL, JSM, UNIX syslog dameon이 있다.
로거에는 하나 이상의 Appender를 설정 할 수 있다.
addAppender라는 함수가 주어진 로그에 Appender를 설정해준다. Appender가 L이라는 로그에 설정되면, L 하위에 있는 로거에 로깅 요청이 온 경우, 모두 이 Appender를 호출한다.
예 ) com.overnodes.util에서 로깅 요청을 한 경우, 부모 로거에 설정된 console, file appender가 모두 실행 된다.
root looger <- console appender
com
com.overnodes <- file appender
com. overnodes.util
물론 하위 로거에서 호출되지 않기를 바라면, additivity flag = false 로 설정해주면 된다.
Layout
변수 로깅에 출력하기
logger.debug("The new entry is {}. It replaces {}.", entry, oldEntry);
Logback 아키텍처 -logback 동작과정
1. Filter chain 결과 가져오기
- FilterReply.DENY : logging request는 끝난다.
- FilterReply.NEUTRAL : 2번째 단계로 넘어간다.
- FilterReply.ACCEPT : 2번째 단계를 건너뛰고, 3번째 단계로 넘어간다.
2. Basic Selection rule 적용하기
3. LoggingEvent 객체 생성
4. Appenders 실행
5. Output 형식 맞추기
6. Appender에게 Logging Event 보내기
loggin event가 완전히 format 되고 나면, 각각의 Appender에게 보내진다.
'Back-End' 카테고리의 다른 글
서버 개발자의 SPA 적용기 - NHN FORWARD (0) | 2019.11.27 |
---|---|
Spring - Unable to acquire JDBC Connection 이슈 (1) | 2019.08.02 |
백앤드 개발자 면접 준비 리스트 (0) | 2019.03.31 |
2.logback Appender란 (0) | 2018.09.19 |
서버 아키텍처 (0) | 2018.03.06 |