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을 활용하면 필요에 따라 로그를 간단히 설정하거나, 고급 기능을 추가할 수 있습니다. 로그 설정을 적절히 활용하면 애플리케이션의 상태를 모니터링하고 문제를 빠르게 해결할 수 있습니다.
'스프링 부트3' 카테고리의 다른 글
스프링 부트 3란 무엇인가? (0) | 2024.12.05 |
---|---|
스프링 부트 3에서 프로퍼티 파일 설정 (0) | 2024.12.04 |
Spring Boot Actuator로 애플리케이션 모니터링하기 (0) | 2024.12.04 |
Spring Boot DevTools로 개발 효율성 높이기 (0) | 2024.12.04 |
스프링 부트 3에서 CORS 설정하기: 올바른 API 접근 관리 방법 (0) | 2024.12.04 |