본문 바로가기
스프링 부트3

스프링 부트 3의 기본 로그 설정

by 굿센스굿 2024. 12. 4.
반응형

 

1. 스프링 부트 3의 로그 시스템 소개

스프링 부트 3는 **SLF4J(Simple Logging Facade for Java)**를 기본 로깅 추상화 계층으로 사용하며, 기본 구현체로 Logback을 포함합니다. 이를 통해 다양한 로깅 프레임워크와 유연하게 통합할 수 있습니다. 스프링 부트는 기본적으로 손쉬운 설정과 유용한 기본값을 제공하므로 추가적인 설정 없이도 강력한 로깅 환경을 사용할 수 있습니다.

2. 기본 로그 설정 확인

(1) 로그 레벨
스프링 부트 3 애플리케이션은 기본적으로 다음과 같은 로그 레벨을 제공합니다.

  • TRACE: 가장 상세한 로그. 주로 디버깅용.
  • DEBUG: 디버깅 정보를 출력.
  • INFO: 일반적인 실행 정보. 기본 설정 레벨.
  • WARN: 경고 메시지.
  • ERROR: 에러 메시지.

(2) 기본 출력 포맷
기본 로그 포맷은 다음과 같습니다.

2024-12-03 12:34:56.789  INFO 12345 --- [main] com.example.demo.DemoApplication : Application started
  • 날짜와 시간: 2024-12-03 12:34:56.789
  • 로그 레벨: INFO
  • 프로세스 ID: 12345
  • 스레드 이름: [main]
  • 로거 이름: com.example.demo.DemoApplication
  • 메시지: Application started

3. 기본 로그 설정 커스터마이징

(1) application.properties에서 로그 레벨 설정
로그 레벨은 간단히 설정 파일에서 변경할 수 있습니다.

logging.level.root=INFO
logging.level.org.springframework=DEBUG
logging.level.com.example=TRACE
  • logging.level.root: 전체 애플리케이션의 기본 로그 레벨.
  • 특정 패키지(org.springframework, com.example)에 대한 로그 레벨을 별도로 설정 가능.

(2) 로그 출력 대상 설정
기본적으로 로그는 콘솔에 출력됩니다. 파일로 로그를 저장하려면 다음과 같이 설정합니다.

logging.file.name=app.log
logging.file.path=logs
  • logging.file.name: 특정 파일에 로그를 저장.
  • logging.file.path: 디렉토리 경로를 지정하여 spring.log로 저장.

(3) 로그 포맷 변경
application.properties에서 로그 포맷을 변경할 수 있습니다.

logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
  • 콘솔 로그 패턴: logging.pattern.console
  • 파일 로그 패턴: logging.pattern.file

4. Logback을 활용한 고급 설정

(1) logback-spring.xml 파일 작성
스프링 부트는 Logback을 사용하므로, XML 파일을 이용해 더 정교한 설정을 할 수 있습니다. 프로젝트의 src/main/resources 디렉토리에 logback-spring.xml을 추가합니다.

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>logs/app.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>
  • 콘솔과 파일에 로그를 동시에 출력.
  • 파일 경로는 logs/app.log.

(2) 패키지별 로그 레벨 설정

<logger name="com.example" level="DEBUG"/>
<logger name="org.springframework" level="WARN"/>
  • com.example 패키지에 대해 DEBUG 로그 출력.
  • org.springframework 패키지의 로그를 WARN 이상으로 제한.

5. 예제: 로그 활용하기

(1) 간단한 로깅 구현

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LoggingController {

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

    @GetMapping("/log")
    public String logExample() {
        logger.info("INFO 로그 메시지");
        logger.debug("DEBUG 로그 메시지");
        logger.error("ERROR 로그 메시지");
        return "로그 예제 출력 완료";
    }
}
  • /log로 요청을 보내면 다양한 로그 레벨로 메시지가 출력됩니다.

(2) 파일로 저장된 로그 확인
위 설정을 통해 logs/app.log 파일에서 로그를 확인할 수 있습니다.

6. 결론

스프링 부트 3의 기본 로그 설정은 개발자에게 강력하고 유연한 로깅 환경을 제공합니다. application.properties 또는 logback-spring.xml을 활용하면 필요에 따라 로그를 간단히 설정하거나, 고급 기능을 추가할 수 있습니다. 로그 설정을 적절히 활용하면 애플리케이션의 상태를 모니터링하고 문제를 빠르게 해결할 수 있습니다.

반응형