OKdevTV
logback.xml) 수정 시, 애플리케이션 재시작 없이 변경 사항을 자동 감지(Scan) 및 반영함.Logback은 총 5단계의 로깅 레벨을 정의하며, 하위 레벨 설정 시 상위 레벨의 로그가 포함되어 출력되는 계층적 구조를 가짐.
(최하위) TRACE → DEBUG → INFO → WARN → ERROR (최상위)
| 구성 요소 | 주요 기능 및 역할 |
|---|---|
| Logger | 로그 컨텍스트를 관리하며, 패키지별 로그 레벨 필터링 및 수집 주체 역할을 수행함. |
| Appender | 수집된 로그를 최종적으로 출력할 대상 위치(매체)를 결정함. |
| Encoder | 로그 이벤트를 바이트 배열로 변환하고, 지정된 포맷(Format)으로 문자열을 포매팅함. |
logback.xml)<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
<property name="LOG_PATH" value="./logs" />
<property name="LOG_FILE_NAME" value="application" />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/${LOG_FILE_NAME}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/archive/${LOG_FILE_NAME}.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>30</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.yourpackage" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE" />
<appender-ref ref="ROLLING_FILE" />
</logger>
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="ROLLING_FILE" />
</root>
</configuration>