[java] Log4j의 로거(Loggers) 개념

Log4j는 자바 애플리케이션에서 로그 메시지를 생성, 관리 및 출력하기 위한 라이브러리입니다. 로그 메시지는 애플리케이션의 실행 중에 발생하는 동작과 상태에 대한 정보를 기록하는 데 사용됩니다. Log4j에서 로그를 기록하기 위해서는 로거(Loggers) 개념을 이해해야 합니다.

로거란?

로거는 Log4j에서 로그 메시지를 관리하기 위해 사용되는 객체입니다. 각 로거는 특정한 이름을 가지며, 로거의 이름은 계층적인 구조를 가질 수 있습니다. 로거의 이름은 logger.name 형식으로 표현됩니다.

로거 계층 구조

Log4j 에서 로거는 상하위 계층 구조를 가집니다. 이러한 계층 구조를 통해 로거의 이름을 사용하여 로그를 구분하고 관리할 수 있습니다. 각 로거는 부모 로거와 자식 로거를 가질 수 있는데, 부모 로거의 설정이 자식 로거에게 상속되는 특성이 있습니다.

예를 들어, com.example 라는 이름을 가진 부모 로거가 있다면, com.example.foo 로거는 이 부모 로거의 자식 로거입니다. 이 경우, 부모 로거의 설정이 자식 로거에게 상속되므로 부모 로거에 설정된 로그 레벨, 출력 대상 등이 자식 로거에도 적용됩니다.

로거 설정하기

Log4j의 로거는 Logger.getLogger() 메서드를 사용하여 가져올 수 있습니다. 이 메서드의 인자로 로거의 이름을 전달하는데, 일반적으로 클래스의 패키지 이름을 사용합니다.

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class MyClass {
    private static final Logger logger = LogManager.getLogger(MyClass.class);

    public void doSomething() {
        // 로그 메시지 출력
        logger.info("Something happened");
    }
}

위의 예제에서는 LogManager.getLogger() 메서드를 사용하여 로거를 가져온 후, Logger.info() 메서드를 호출하여 로그 메시지를 출력합니다.

로그 레벨(Level)

Log4j에서는 로그 메시지를 다양한 레벨로 구분할 수 있습니다. 로그 레벨은 로거의 설정에 따라 출력될지 결정됩니다. Log4j에서 제공하는 로그 레벨은 다음과 같습니다:

로거의 설정에서 로그 레벨을 지정하여 어느 레벨 이상의 로그 메시지를 출력할지 결정할 수 있습니다.

요약

Log4j의 로거는 로그 메시지를 생성, 관리 및 출력하기 위한 핵심 개념입니다. 로거는 계층 구조를 가지며, 로거의 이름은 부모-자식 관계를 통해 상속됩니다. 로거의 설정에서 로그 레벨을 지정하여 원하는 메시지만 출력할 수 있습니다. Log4j를 사용하여 애플리케이션의 실행 중에 발생하는 이벤트와 상태를 기록하고 추적하는 방법을 익히면, 디버깅 및 문제 해결에 도움이 될 수 있습니다.

참고: Log4j 2 Documentation