[Spring] Logging Framework 와 Logback 비교

    [Spring] Logging Framework 와 Logback 알아보기

    Spring Logging Framework

    Spring Logging Framework는 Spring 프레임워크에서 제공하는 로깅 추상화 인터페이스입니다. 특정한 로깅 구현체에 종속되지 않고 일관된 방식으로 로깅을 수행할 수 있습니다.

    Spring Logging Framework는 SLF4J(Simple Logging Facade for Java) 인터페이스를 지원합니다. SLF4J는 Java 언어에서 사용되는 로깅 인터페이스 중 하나로, 로깅 구현체와의 결합도를 낮추어줍니다. 따라서 어플리케이션에서 로깅을 수행할 때 SLF4J를 사용하면, 어떤 로깅 구현체를 사용하더라도 일관된 방식으로 로깅을 수행할 수 있습니다.

    Logback

    Logback은 SLF4J의 구현체 중 하나로, Spring Boot에서 기본적으로 사용되는 로깅 구현체입니다. Logback은 기존의 Log4j 프레임워크를 대체하기 위해 개발되었으며, Log4j의 모든 기능을 지원합니다. 또한, Logback은 안정성과 성능 측면에서 우수한 성능을 보입니다.

    Spring Boot는 기본적으로 Logback을 사용하도록 설정되어 있습니다. 따라서 Spring Boot 어플리케이션에서 로깅을 수행할 때는, Logback 구현체를 사용하는 SLF4J를 사용하면 됩니다.

    Logback은 logback.xml 또는 logback-spring.xml 파일을 사용하여 로깅 구성을 설정합니다. logback.xml 파일은 Spring Boot의 프로필과 관계없이 일관된 로깅 설정을 제공합니다. logback-spring.xml 파일은 Spring Boot의 프로파일에 따라 다른 로깅 설정을 제공합니다.

    1. logback.xml

    <configuration>
      <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
          <pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
        </encoder>
      </appender>
    
      <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>myapplication.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
          <fileNamePattern>myapplication.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
          <maxFileSize>10MB</maxFileSize>
          <maxHistory>30</maxHistory>
          <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
          <pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
        </encoder>
      </appender>
    
      <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
      </root>
    </configuration>

    로그 파일은 10MB 크기를 넘어가거나, 하루가 지나면 새로운 파일로 교체됩니다. 최대 30개까지 보관되며, 총 용량은 10GB를 넘지 않도록 설정되어 있습니다.

    2. logback-spring.xml

    <configuration>
      <springProperty scope="context" name="appName" source="spring.application.name"/>
    
      <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
          <pattern>%d{HH:mm:ss.SSS} %-5level ${appName} - %msg%n</pattern>
        </encoder>
      </appender>
    
      <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/${appName}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
          <fileNamePattern>logs/${appName}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
          <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
          <pattern>%d{HH:mm:ss.SSS} %-5level ${appName} - %msg%n</pattern>
        </encoder>
      </appender>
    
      <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
      </root>
    </configuration>

    로그 파일은 logs 디렉토리에 위치하며, 날짜별로 파일이 생성되고 최대 30일까지 보관됩니다.

    Logback은 다양한 로깅 기능을 제공합니다.

    • 다양한 로그 레벨: TRACE, DEBUG, INFO, WARN, ERROR 등
    • 로그 롤링: 로그 파일의 크기나 시간 기반으로 로그를 롤링하여 보관
    • 로그 필터링: 특정 패턴이나 클래스에 대해서만 로그를 출력하도록 필터링 가능
    • MDC(Mapped Diagnostic Context) 지원: 로그 메시지에 추가 정보를 제공할 수 있도록 지원

    댓글

    Designed by JB FACTORY