Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 9 플랫폼 로깅 API(Platform Logging API) 완벽 가이드

Java 9에서 새롭게 도입된 플랫폼 로깅 API(Platform Logging API)는 메시지를 기록하기 위한 서비스 인터페이스를 제공하여, 로그 메시지의 소비자(consumer)가 이를 활용할 수 있도록 설계되었습니다.

LoggerFinder와 ServiceLoader의 역할

플랫폼 로깅 API의 핵심인 LoggerFinder 구현체는 java.util.ServiceLoader API를 통해 시스템 클래스로더(System ClassLoader)에 의해 로드됩니다. 이 구현체를 기반으로 애플리케이션은 java.util.logging을 별도로 설정하지 않고도 자신만의 외부 로깅 백엔드(예: Log4j, SLF4J 등)를 손쉽게 연결할 수 있습니다.

LoggerFinder 사용 방법

LoggerFinder에 클래스 이름이나 모듈을 전달하면, 어떤 로거(logger)를 반환해야 하는지 판단할 수 있습니다. 아래는 LoggerFinder를 상속하여 커스텀 로거 파인더를 구현하는 예제입니다.

public class MyLoggerFinder extends LoggerFinder {
    @Override
    public Logger getLogger(String name, Module module) {
        // name/module에 따라 적절한 로거를 반환
    }
}

기본 구현과 System 클래스의 팩토리 메서드

만약 구체적인(concrete) 구현체를 찾을 수 없는 경우에는 기본(default) LoggerFinder 구현이 자동으로 사용됩니다. 그리고 LoggerFinder를 통해 생성된 로거는 System 클래스가 제공하는 팩토리 메서드를 이용해 얻을 수 있습니다.

public class System {
    System.Logger getLogger(String name) {
    }
    System.Logger getLogger(String name, ResourceBundle bundle) {
    }
}

정리

Java 9의 플랫폼 로깅 API는 JDK 내부 로깅과 애플리케이션 로깅을 하나의 통합된 방식으로 처리할 수 있게 해주며, 외부 로깅 프레임워크와의 유연한 통합을 가능하게 합니다. ServiceLoader 기반의 확장 구조 덕분에 기존 설정을 크게 변경하지 않고도 원하는 로깅 백엔드를 손쉽게 교체할 수 있다는 점이 가장 큰 장점입니다.