Ch1 : Introduction to logback

devhans·2023년 7월 11일
0

Logback

목록 보기
2/2

What is logback?

Logback은 log4j 프로젝트를 계승할 목적으로 개발됐습니다. 로그백은 기존의 모든 로깅 시스템보다 더 빠르며 작은 메모리 풋프린트를 가지며 때로는 큰 폭으로 우수한 성능을 보입니다. 더 중요한 것은 로그백이 다른 로깅 시스템에 없는 독특하고 유용한 기능을 제공한다는 점입니다.

First Baby Step

Requirements

Logback-classic 모듈은 logback-classic.jar 외에도 slf4j-api.jarlogback-core.jar도 클래스패스에 포함되어야 합니다.

logback-*.jar 파일은 logback 배포판에 포함되어 있으며 slf4j-api-2.0.7.jar는 별도의 프로젝트인 SLF4J와 함께 제공됩니다.

이제 로그백을 실험해 보겠습니다.

예제 1.1: 로깅을 위한 기본 템플릿 ( logback-examples/src/main/java/chapters/introduction/HelloWorld1.java)

package chapters.introduction;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld1 {
    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld1");
        logger.debug("Hello world.");
    }
}

HelloWorld1 클래스는 chapters.introduction 패키지에 정의되어 있습니다. 이 클래스는 SLF4J API 내의 org.slf4j 패키지에 정의된 LoggerLoggerFactory 클래스를 가져옵니다.

main() 메서드의 첫 번째 줄에서는 logger라는 변수에 LoggerFactory 클래스의 정적 메서드 getLogger를 호출하여 가져온 Logger 인스턴스를 할당합니다. 이 로거의 이름은 "chapters.introduction.HelloWorld1"입니다. main 메서드는 이 로거의 debug 메서드를 호출하고 "Hello World"를 인자로 전달합니다. 이렇게 하면 main 메서드에는 수준이 DEBUG이고 메시지가 "Hello world"인 로깅 문장이 포함되어 있다고 말할 수 있습니다.

위의 예제에서는 로그백 클래스를 참조하지 않습니다. 로깅과 관련하여 대부분의 경우 클래스는 SLF4J 클래스만 가져와야 합니다. 따라서 대부분의 클래스에서 SLF4J API를 사용하고 로그백의 존재를 알지 못할 것입니다.

다음 명령을 사용하여 첫 번째 샘플 애플리케이션인 chapters.introduction.HelloWorld1을 실행할 수 있습니다:

java chapters.introduction.HelloWorld1

HelloWorld1 애플리케이션을 실행하면 콘솔에 한 줄의 출력이 나타납니다. 로그백의 기본 설정 정책에 따라 기본 설정 파일이 없을 때 로그백은 루트 로거에 ConsoleAppender를 추가합니다.

20:49:07.962 [main] DEBUG chapters.introduction.HelloWorld1 - Hello world.

로그백은 내장 상태 시스템을 사용하여 내부 상태 정보를 보고할 수 있습니다. 로그백의 수명 동안 발생하는 중요한 이벤트는 StatusManager라는 구성 요소를 통해 액세스할 수 있습니다. 일단은 StatusPrinter 클래스의 정적 print() 를 호출하여 로그백의 내부 상태를 출력하도록 지시해 보겠습니다.

예제: 로거 상태 출력 ( logback-examples/src/main/java/chapters/introduction/HelloWorld2.java)

package chapters.introduction;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.util.StatusPrinter;

public class HelloWorld2 {
    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld2");
        logger.debug("Hello world.");

        // 내부 상태 출력
        LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
        StatusPrinter.print(lc);
    }
}

HelloWorld2 애플리케이션을 실행하면 다음과 같은 출력이 생성됩니다:

12:49:22.203 [main] DEBUG chapters.introduction.HelloWorld2 - Hello world.
12:49:22,076 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
12:49:22,078 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Setting up default configuration.

로그백은 logback-test.xmllogback.xml 설정 파일을 찾지 못하면 기본 설정 정책을 사용하여 자체적으로 구성합니다. 기본 설정 정책은 기본적인 ConsoleAppender입니다. Appender는 출력 대상으로 볼 수 있는 클래스입니다. 콘솔, 파일, Syslog, TCP 소켓, JMS 등 여러 가지 대상에 대한 Appender가 존재합니다. 사용자는 필요에 맞게 자신만의 Appender를 쉽게 만들 수도 있습니다.

오류가 발생한 경우 logback은 자동으로 콘솔에 내부 상태를 출력합니다.

이전 예제들은 상당히 간단한 예제입니다. 큰 규모의 애플리케이션에서도 실제 로깅은 그렇게 다르지 않을 것입니다. 로깅 문장의 일반적인 패턴은 변경되지 않을 것입니다. 구성 프로세스만 다를 수 있습니다. 그러나 로깅백을 사용자의 요구에 맞게 사용자 정의하거나 구성하는 것이 필요할 수 있습니다. 로그백 구성은 이후 장에서 다룰 예정입니다.

위의 예제에서는 StatusPrinter.print() 메서드를 호출하여 로그백의 내부 상태를 출력하도록 지시했습니다. 로그백의 내부 상태 정보는 로그백과 관련된 문제를 진단하는 데 매우 유용할 수 있습니다.

로그인 애플리케이션에서 로깅을 활성화하려면 다음과 같은 세 가지 단계를 수행해야 합니다.

  1. 로그백 환경을 구성합니다. 이를 위해 여러 가지 더 나은 또는 복잡한 방법을 사용할 수 있습니다. 이에 대해서는 나중에 자세히 설명하겠습니다.
  2. 로깅을 수행하려는 모든 클래스에서 org.slf4j.LoggerFactory 클래스의 getLogger() 메서드를 호출하여 Logger 인스턴스를 가져옵니다. 이 때 현재 클래스 이름 또는 클래스 자체를 매개변수로 전달합니다.
  3. 이 로거 인스턴스를 사용하여 debug(), info(), warn() 및 error()와 같은 출력 메서드를 호출합니다. 이렇게 하면 구성된 Appender에 로깅 출력이 생성됩니다.

로그백 빌드

로그백은 Maven이라는 널리 사용되는 오픈 소스 빌드 도구를 사용합니다.

Maven을 설치한 후 logback 프로젝트를 빌드하려면 logback 배포를 압축 해제한 디렉토리에서 mvn install 명령을 실행하면 됩니다. Maven은 필요한 외부 라이브러리를 자동으로 다운로드합니다.

로그백 배포에는 로그백 라이브러리의 모든 소스 코드가 포함되어 있어서 로그백 라이브러리의 일부를 수정하고 자체 버전을 빌드할 수 있습니다. 수정한 버전을 LGPL 라이선스 또는 EPL 라이선스의 조건을 준수하는 한 재배포할 수도 있습니다.

IDE에서 로그백을 빌드하려면 클래스패스 설정 페이지의 관련 섹션을 참조하십시오.

공식문서 : https://logback.qos.ch/manual/introduction.html

profile
책 읽고 운동하는 개발자

0개의 댓글