Logback 세팅

아현·2022년 8월 13일
0

⚙️Config

목록 보기
2/4
post-thumbnail

Logback


로그 레벨

ERROR : 일반 에러가 일어 났을 때 사용한다.
WARN : 에러는 아니지만 주의할 필요가 있을 때 사용한다.
INFO : 일반 정보를 나타낼 때 사용한다.
DEBUG : 일반 정보를 상세히 나타낼 때 사용한다.
TRACE : 경로추적을 위해 사용한다.

설정

resources/ 하위에logback.xml또는 logback-spring.xml (spring-boot의 경우는 후자로 설정)

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
    <!-- INCLUDE -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>

    <!-- 변수 지정 -->
    <property name="LOG_DIR" value="./logs"/>
    <property name="LOG_FILE" value="${LOG_DIR}/logback.log"/>
    <property name="LOG_FILE_PROD" value="${LOG_DIR}/logback-prod.log"/>

    <!-- SpringProfile :: Development -->
    <springProfile name="dev">
        <!-- Appender -->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
            </encoder>
        </appender>
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_FILE}</file>
            <encoder>
                <pattern>${FILE_LOG_PATTERN}</pattern>
            </encoder>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}</fileNamePattern>
                <maxHistory>10</maxHistory>
                <totalSizeCap>5GB</totalSizeCap>
            </rollingPolicy>
        </appender>
        <!-- Logger -->
        <logger name="org.springframework" level="info"/>
        <logger name="org.mybatis.spring.boot" level="debug"/>
        <!-- Root Logger -->
        <root level="debug">
            <appender-ref ref="FILE"/>
            <appender-ref ref="STDOUT"/>
        </root>
    </springProfile>

    <!-- SpringProfile :: Production -->
    <springProfile name="prod">
        <!-- Appender -->
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_FILE_PROD}</file>
            <encoder>
                <pattern>${FILE_LOG_PATTERN}</pattern>
            </encoder>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.log</fileNamePattern>
                <maxHistory>30</maxHistory>
                <totalSizeCap>10GB</totalSizeCap>
            </rollingPolicy>
        </appender>
        <!-- Logger -->
        <logger name="org.springframework"/>
            <level value="error"/></logger>
        <!-- Root Logger -->
        <root level="info">
            <appender-ref ref="FILE"/>
        </root>
    </springProfile>
</configuration>

구조

  • configuration
    • include
      • defaults.xml : Property, Logger 관련 파일
      • base.xml : Spring Boot에서 제공하는 기본 설정 파일
      • console-appender.xml : Console 에 대한 Appender 파일
      • file-appender.xml : File 에 대한 Appender 파일
    • springProfile : 개발환경 별로 다르게 설정
      • appender : 로그의 출력 위치, 포맷 설정
        • ConsoleAppender : 콘솔에 출력되는 로그
        • FileAppender : 파일에 출력되는 로그
        • RollingFileAppender : 파일에 출력되는 로그, 특정 시점을 기준으로 파일을 분할 가능
      • logger : 지정한 name 하위에 있는 대상의 로그를 지정한 ref에 출력
      • root : 모든 대상의 로그를 지정한 ref에 출력
  • 프로필은 VM Option에서 변경할 수 있다.
    • -Dspring.profiles.active=dev
    • -Dspring.profiles.active=prod
profile
💻🤦🏻‍♀️

0개의 댓글