logback

Logback

설정 파일

src/main/resources/ 아래에 설정 파일을 추가한다.
기본적으로 classpath에서 스프링부트가 읽어가는 파일 이름은 logback-spring.xml이다.
스프링부트의 환경설정에 따라 xml파일을 분리설정할 수 있다.
예)logback-local.xml, logback-prod.xml

logback-spring.xml 예시

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 스프링부트 기본 설정 -->
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <!-- 로그 경로 변수 선언 -->
    <property name="LOG_DIR" value="${user.home}/logs/app" />
    <property name="LOG_PATH" value="${LOG_DIR}/app.log"/>
    
    <!-- Console Appender -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                %-5level %d{HH:mm:ss.SSS} [%thread %F:%L] %method - %msg%n
            </pattern>
        </encoder>
    </appender>
    <!-- Rolling File Appender -->
    <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 파일 경로 -->
        <file>${LOG_PATH}</file>
        <!-- 출력패턴 -->
        <encoder>
            <pattern>%-5level %d{HH:mm:ss.SSS} [%thread %F:%L] %method - %msg%n</pattern>
        </encoder>
        <!-- Rolling 정책 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- .gz,.zip 등을 넣으면 자동으로 일자별 로그파일 압축 -->
            <fileNamePattern>${LOG_DIR}/app_%d{yyyy-MM-dd}_%i.log.gz</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 파일당 최고 용량 10MB -->
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!-- 일자별 로그파일 최대 보관주기(일단위) 
            만약 해당 설정일 이상된 파일은 자동으로 제거-->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
    </appender>
 
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>

    <logger name="Mylog" level="DEBUG">
        <appender-ref ref="ROLLING_FILE"/>
    </logger>
    
</configuration>

appender

로그 파일의 출력 양식을 지정한다.

주요 Appender 종류

이름 설명
ConsoleAppender 콘솔에 로그를 남김
FileAppender 파일에 로그를 남김 gi
RollingFileAppender 여러개의 파일을 순회하면서 로그를 남김
SMTPAppender 로그를 메일로 보냄
DBAppender DB에 로그를 남김
AwsLogsAppender AWS cloudwatch
LogstashTcpSocketAppender logstash

root, logger

appender를 참조하여 로그 기능을 수행하는 객체

Reference