SideProject/개발일지

6. logback 설정 관련 정리

박세류 2024. 11. 20. 10:47

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 : 유지할 파일 일수

하위 요소

  • encoder: 로그 메시지 형식 (최상위 요소)
    • pattern: 로그 메시지의 형식을 지정한다.
      • %level: 로그 레벨
      • %logger : 로거 이름 { 최대 글자 }
      • %msg: 실제 로그 메시지
      • %n: 줄바꿈

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