Logback은 Java에서 가장 많이 사용되는 logging framework 이다.
Log4j의 후속 버전으로 새롭게 만든 Logging 라이브러리이며, slf4j API를 구현하므로 다른 logging framework와 logback 간에 쉽게 전환이 가능하다.
Log4j1.x와 Logback비교시 Logback 장점
- log4j 보다 메모리 점유도 작고, 성능도 10배 이상 향상
- log4j는 로그레벨 변경시 서버 재기동이 필요하지만 logback은 내부 스캐닝을 통해 자동으로 로드 가능
- 로그 파일 롤링시 설정을 통해서 주기적으로 파일 자동삭제
- log4j 보다 많은 필터링 기능 제공
Logback구조
logback은 Logger, Appender, Layout 3가지 구성요소가 있다.
Logger class 는 logback-classic의 모듈 이고, Appender 및 Layout interfaces 는 logback-core 부분 입니다.
- Logger : 어플리케이션이 로그 메세지를 작성하기 위해 사용하는 클래스
- Appender : 설정해 놓은 위치에 로그 메세지를 저장
- Layout: 메세지를 출력할 준비 ( 참고 URL : https://logback.qos.ch/manual/layouts.html )
Log 레벨

설정파일 (순서대로 높은 우선순위를 가짐)
- logback.groovy
- logback-test.xml
- logback.xml
Maven Dependency
logback classic에 core가 종속되어있어서 따로 추가 안 해도 된다.1
2
3
4
5<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>
기본 구성
logback.xml 파일을 만들어 src\main\resources에 추가 한다.

1
2
3
4
5
6
7
8
9
10
11<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>
테스트를 하기 위해서 main 메서드를 가진 클래스를 생성1
2
3
4
5
6
7
8public class Logback {
 
     private static final Logger logger  = LoggerFactory.getLogger(Logback.class);
 
     public static void main(String[] args) {
                 logger.info("log Example {}", Logback.class.getSimpleName());
     }
}
| 1 | 23:15:16.425 [main] INFO Logback - log Example Logback | 
기본 구성을 살펴보면
- class="ch.qos.logback.core.ConsoleAppender"클래스 이름을 참조하는- name="STDOUT"name을 가진- appender가 있다.
- 로그 메세지 출력 형식의 <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>을 확인 할수 있다.
- root 태그는 debug 모드로 설정하고, STDOUT을 가진appender를 참조한다.
- Logger 를 만들고 logger.info()메소를 통해 메세지가 출력되는지 결과화면으로 확인한다.
설정 옵션
configuration
설정 파일 수정시 자동으로 로드 ( scanPeriod=”30 seconds“ -> 설정파일 수정을 30초마다 스캔, default=1분 )1
2
3<configuration scan="true" scanPriod="30 seconds">
    ...
<configuration>
Logger
name="me.logback.level"이하 모든 Logger들의 level은 DEBUG라는 설정1
<logger name="me.logback.level" level="DEBUG"/>
additivity :  name="me.logback.level" 이하 패키지는 모두 적용되지만, false 값으로 설정시 name에만 logger 가 적용된다.1
<logger name="me.logback.level" level="DEBUG" additivity="false"/>
Appender
- ConsoleAppender
| 1 | <!-- "CONSOLE" name 을 가진 appender 설정 --> | 
- RollingFileAppender
| 1 | <appender name="ROLLING-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | 
파일 생성 결과 화면

logback.xml 샘플
| 1 | 
 |