Logback?
Logback 은 Log4J(SL4FJ 의 구현체) 를 기반으로 재탄생한 SL4FJ 의 구현체로 스프링 부트 기본으로 들어있는 라이브러리이다.
spring-boot-starter-web에 spring-boot-starter-logging 으로 들어있다.
Spring Boot 는 기본적으로 CommonsLogging을 쓴다.
Jul to SLF4J
Log4J to SLF4J
SLF4J -> Logback
CommonsLogging을 쓰나 결국 Logback 으로 출력한다. Spring Boot에서는 우리 로깅 진~짜 잘 돼 있으니까 구현체를 바꾸거나 할 일이 없을 것이다 하고 얘기한다.
Spring 프레임워크 5.0부터 Spring에는 spring-jcl 모듈에 구현된 CommonsLogging Bridge가 제공됩니다. 이 구현은 클래스 경로에 Log4j 2.x API와 SLF4J 1.7 API가 있는지 확인하고, 발견된 것 중 첫 번째를 로깅 구현으로 사용하며, Log4j 2.x와 SLF4J를 모두 사용할 수 없는 경우 Java 플랫폼의 핵심 로깅 기능(JUL 또는 java.util.logging이라고도 함)으로 되돌아가게 됩니다.
추가 브리지 없이 클래스 경로에 Log4j 2.x 또는 Logback(또는 다른 SLF4J 공급자)을 넣으면 프레임워크가 선택에 따라 자동으로 조정됩니다. 자세한 내용은 Spring Boot 로깅 참조 문서를 참조하세요.
라고 적혀있다.
Logback 은 Fatal 로그 레벨이 존재하지 않습니다. Fatal 로그 레벨은 Logback의 Error 레벨과 매핑됩니다.
라고 적혀 있다.
Logback 출력 기본 설정
2024-01-19T06:35:45.755Z INFO 37160 --- [myapp] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path ''
시간 로그레벨 프로세스아이디 —- 어플리케이션 이름 [쓰레드] 로거이름 : 로그메세지
구조
Logback은 세가지 모듈로 나뉜다.
Logback-Core
다른 두 모듈을 위한 기반 역할을 하는 모듈
Appender 와 Layout 인터페이스가 이 모듈에 속한다.
Logback-Classic
Logback-Core 에서 확장된 모듈
SLF4J API 를 구현했다. Logger 클래스가 이 모듈에 속한다.
Logback-Classic 에 포함된 라이브러리들은 해당 Artifact 의 올바른 버전 사용이 필요하다.
모두 명시적으로 선언하는 것이 좋기에 exclude 해주는 것이 좋다.
Logback-Access
Servlet Container 와 통합되어 HTTP 액세스에 대한 로깅 기능을 제공한다.
Logback-Classic 및 SLF4J 와 무관하다.
웹 어플리케이션 레벨이 아닌 컨테이너 레벨에서 설치돼야 한다.
Level 클래스에서는 Trace < Debug < Info < Warn < Error 가 정의 되어 있다
Fatal이 없는 것을 볼 수 있음
Level 속성을 통해서 출력할 로그의 레벨을 조절할 수 있다.
로그레벨을 설정하면 그 이상의 로그들만 출력된다.
ex. Info 로 설정 -> Info < Warn < Error 까지 출력
Default 는 Debug로 설정되어 있다.
로그 메세지가 출력할 대상을 결정하는 요소이다.
Console에 출력? File에 출력?
콘솔에 출력하고 싶어? ConsoleAppender
파일로 출력하고 싶어? FileAppender
파일을 일정 조건에 맞게 따로 저장하고 싶어? RollingFileAppender
Encoder → 로그를 Byte 배열로 저장
해당 바이트 배열을 OutputStream에 쓰는 작업을 담당
Appender에 포함되어 사용자가 지정한 형식의 표현될 로그메시지를 변환하는 역할을 담당하는 역할
FileAppender와 하위 클래스는 Layout을 사용하지 않음(필요하지 않아서)
현재는 Encoder를 사용해도 괜찮을듯
'TIL' 카테고리의 다른 글
TIL 2024-01-30 도메인 간의 서비스 참조, 레포지토리 참조 (0) | 2024.01.31 |
---|---|
TIL 2024-01-29 로그 MDC (0) | 2024.01.29 |
TIL 2024-01-25 Logging / SLF4J (0) | 2024.01.26 |
TIL 2024-01-24 유저 테스트를 시작하면서 느끼는 점 (0) | 2024.01.24 |
TIL 2024-01-23 프로세스와 쓰레드 (0) | 2024.01.24 |