[java] SLF4J에서 커스텀 로깅 앱 추가하기

SLF4J(Simple Logging Facade for Java)는 Java 애플리케이션에서 로깅을 위한 편리한 인터페이스를 제공하는 라이브러리입니다. 이 라이브러리를 사용하면 코드에서 로그를 작성하고, 로그 출력을 다양한 로깅 앱에 대한 배포 시점에 변경할 수 있습니다.

기본적으로 SLF4J는 로그 출력을 지원하지 않습니다. 대신에 다른 로깅 시스템(예: Logback, Log4j)을 사용할 수 있도록 인터페이스를 제공합니다. 하지만 때로는 기존 로깅 시스템과는 다른 커스텀 로깅 앱을 사용하고 싶을 수도 있습니다.

이 포스트에서는 SLF4J에 커스텀 로깅 앱을 추가하는 방법을 알아보겠습니다.

커스텀 로깅 앱 구현하기

  1. SLF4J 커스텀 로깅 앱을 만들기 위해 org.slf4j.spi.LoggerBinder 인터페이스를 구현하는 클래스를 생성합니다.
package com.example.logging;

import org.slf4j.ILoggerFactory;
import org.slf4j.Logger;
import org.slf4j.spi.LoggerFactoryBinder;

public class CustomLoggerBinder implements LoggerFactoryBinder {

    private static final CustomLoggerBinder INSTANCE = new CustomLoggerBinder();
    private static final String LOGGER_FACTORY_CLASS_STR = CustomLoggerFactory.class.getName();

    public static final CustomLoggerBinder getSingleton() {
        return INSTANCE;
    }

    @Override
    public ILoggerFactory getLoggerFactory() {
        return CustomLoggerFactory.getInstance();
    }

    @Override
    public String getLoggerFactoryClassStr() {
        return LOGGER_FACTORY_CLASS_STR;
    }
}
  1. CustomLoggerBinder 클래스에서 사용할 커스텀 로거 팩토리 클래스를 구현합니다.
package com.example.logging;

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

public class CustomLoggerFactory implements ILoggerFactory {

    private static final CustomLoggerFactory INSTANCE = new CustomLoggerFactory();

    public static CustomLoggerFactory getInstance() {
        return INSTANCE;
    }

    @Override
    public Logger getLogger(String name) {
        // 커스텀 로거 인스턴스를 생성하여 반환합니다.
        return new CustomLogger(name);
    }
}
  1. 커스텀 로거 클래스를 구현합니다. 이 클래스는 org.slf4j.Logger 인터페이스를 구현해야 합니다.
package com.example.logging;

import org.slf4j.Logger;
import org.slf4j.Marker;

public class CustomLogger implements Logger {

    private final String name;

    public CustomLogger(String name) {
        this.name = name;
    }

    // Logger 인터페이스의 다른 메서드들을 구현합니다.
    // ...

}
  1. 로깅 앱에서 LoggerFactoryBinder 클래스를 로드할 수 있도록 META-INF/services 디렉토리에 org.slf4j.spi.LoggerFactoryBinder 파일을 생성하고, 그 안에 com.example.logging.CustomLoggerBinder 클래스의 전체 이름을 기록합니다.
com.example.logging.CustomLoggerBinder

커스텀 로깅 앱 사용하기

커스텀 로깅 앱을 SLF4J에서 사용하려면 다음 단계를 따르면 됩니다.

  1. 커스텀 로깅 앱의 JAR 파일을 프로젝트의 클래스패스에 추가합니다.

  2. 로깅 코드에서 SLF4J를 사용해서 로그를 작성합니다. SLF4J는 커스텀 로깅 앱의 로깅 기능을 호출하게 됩니다.

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

public class ExampleClass {

    private static final Logger logger = LoggerFactory.getLogger(ExampleClass.class);

    public void doSomething() {
        logger.info("This is a custom log message");
    }
}

참고 자료

위의 방법을 따라 SLF4J에서 커스텀 로깅 앱을 추가할 수 있습니다. 이를 통해 로깅 앱을 원하는 대로 바꾸어 사용할 수 있으며, 유연하고 효율적으로 로깅을 관리할 수 있습니다.