로깅은 애플리케이션이 실행되는 동안 발생하는 이벤트를 기록하는 작업이다. 로깅을 통해 개발자는 애플리케이션의 동작을 추적하고, 디버깅을 쉽게 할 수 있으며, 문제가 발생했을 때 원인을 분석할 수 있다.
스프링 부트를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging)가 자동으로 추가된다.
SLF4J는 스프링 부트 로깅 라이브러리의 인터페이스이며, Logback은 SLF4J의 구현체이다.
SLF4J는 로깅 라이브러리를 교체할 수 있도록 설계되었으며, Logback은 SLF4J의 구현체로 가장 많이 사용된다.
로깅 라이브러리 구현체로 Log4j -> Logback -> Log4j2 순으로 나왔다.
Logback의 설정은 주로 logback.xml 파일을 통해 이루어집니다. 이 파일은 로깅의 전반적인 동작을 정의합니다
- Logger: 로깅 이벤트를 기록할 로거를 정의합니다. 예를 들어, 특정 패키지나 클래스에 대한 로거를 정의할 수 있습니다.
- Appender: 로그 메시지를 출력할 위치를 정의합니다. 예를 들어, 콘솔, 파일, 원격 서버 등.
- Layout: 로그 메시지의 포맷을 정의합니다. 예를 들어, 로그 메시지의 형식을 정의할 수 있습니다.
- Level: 로그 레벨을 설정하여, 특정 레벨 이상의 로그 메시지만 기록되도록 할 수 있습니다. 일반적인 로그 레벨은 TRACE, DEBUG, INFO, WARN, ERROR
- Configuration: Logback의 동작을 정의하는 최상위 요소
- Appender: 로그 메시지를 특정 위치로 전송하는 구성 요소
- Encoder: 로그 메시지를 인코딩하는 데 사용됩니다.
- Layout: 로그 메시지의 형식을 정의합니다.
- Logger: 실제로 로그 메시지를 기록하는 객체
- Filter: 로그 메시지를 필터링하는 데 사용