logback이란?
- Spring Boot에서 기본적으로 사용하는 로깅 프레임 워크
- Logback 설정들로 할수 있는 것들
- 로그를 콘솔에 출력만 할지, 파일로 남길지, 네트워크를 통해 외부로 바로 전달할지 등을 결정하기
- Spring Profile 별로 로그 설정을 다르게 가져가기
- 일정 로그 레벨 이상의 로그들만 남기기
- 로그의 형식 지정하기
- 일정 시간이 지날 때마다, 시간 별로 로그 파일을 정리하거나 로그 파일을 압축해서 보관하기
로그레벨이란?
Fatal | 매우 심각한 에러, 프로그램이 종료되는 경우가 많아 거의 사용되지 않음 |
Error | 의도하지 않은 에러가 발생한 경우, 프로그램이 종료되지 않음 |
Warn | 에러가 될 수 있는 잠재적 가능성이 있는 경우 |
Info | 명확한 의도가 있는 정보성 로그, 주로 개발용 |
Debug | Info 레벨보다 더 자세한 정보가 필요한 경우 |
Trace | Debug 레벨보다 더 자세한 내용을 포함 |
- 심각도 수준은 Error > Warn > Info > Debug > Trace이다.
logback-spring.xml 문법 정리
1. configuration
모든 설정은 <configuration> ~ </configuration> 태그 안에 작성된다.
<configuration>
~~~ blah blah blah
</configuration>
2. Appender
Appender는 로그를 어디에 출력할 것인지 (콘솔, 파일, 네트워크) 등을 정의하는 부분이다. 아래는 코드 예시
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
- 속성:
- ConsoleAppender: 로그를 콘솔에 기록
- <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> 등으로 사용
- FileAppender: 로그를 파일에 기록
- <appender name="file" class="ch.qos.logback.core.ConsoleAppender">
- file: 로그 파일 경로, 하위에 <file>app.log</file> 와 같은 방식으로 사용
- append: 기존 로그에 추가할지 여부 (true 또는 false)
- RollingFileAppender : 로그 파일의 크기가 커지면 자동으로 새로운 파일로 롤링(바뀜)
- rollingPolicy : 롤링 규칙 정의 (TimeBasedRollingPolicy, sizeBasedRollingPolicy)
- fileNamePattern : 롤링된 파일 이름 형식
- maxHistory : 유지할 파일 일수
- rollingPolicy : 롤링 규칙 정의 (TimeBasedRollingPolicy, sizeBasedRollingPolicy)
- ConsoleAppender: 로그를 콘솔에 기록
하위 요소
- encoder: 로그 메시지 형식 (최상위 요소)
- pattern: 로그 메시지의 형식을 지정한다.
- %level: 로그 레벨
- %logger : 로거 이름 { 최대 글자 }
- %msg: 실제 로그 메시지
- %n: 줄바꿈
- pattern: 로그 메시지의 형식을 지정한다.
3. Logger
로그를 어떤 패키지나 클래스에 적용할지에 대해 정한다.
<logger name="com.example" level ="DEBUG"/>
4. Root Logger
루트 로거는 모든 로그의 기본값을 정의한다
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="file"/>
</root>
5. Spring Profiles
환경별 설정을 적용하려면 springProfile 태그를 사용하면 된다.
<springProfile name="dev">
<logger name="com.example" level="DEBUG"/>
</springProfile>
<springProfile name="prod">
<logger name="com.example" level="WARN"/>
</springProfile>
728x90
'SideProject > 개발일지' 카테고리의 다른 글
AWS EC2 프리티어에 깃액션으로 CI/CD 도입기 (2) | 2025.01.05 |
---|---|
3-layer-architecture에서의 Command 객체에 대해서 (1) | 2024.12.09 |
5. PlantUML로 ERD와 Sequence Diagram을 그린 학습내용 정리하기 (1) | 2024.10.29 |
4. React + Spring Boot 이용해서 카카오 로그인 구현기 (공식문서 참조) (0) | 2024.08.15 |
3. 내가 @Setter 어노테이션을 싫어하는 이유 (0) | 2024.07.15 |