Spring Boot/Logback

Logback - fileAppender

수수한개발자 2023. 1. 15.
728x90

로그를 남기는게 중요하다는것은 저번글에서 알아보았습니다.

그럼 이제 로컬 환경말고 운영 및 개발 환경에서의 로그를 남기는 법에 대해서 알아보겠습니다.

 

로컬에서는 인텔리제이로 스프링부트 서버를 시작하게되면 인텔리제이 콘솔에 로그를 확인할수있지만 

실제 운영서버를 띄운다면 콘솔을 확인 할 수 없습니다.

그렇기 때문에 파일로 저장해놓은뒤 파일에 적힌 로그들을 확인해야합니다. 

이제 파일로 로그를 저장하는 법에 대해서 알아보겠습니다.

 

프로젝트 구성

Logback - fileAppender - 프로젝트 구성

 

 

 logback-variables.properties

로그백 설정에서 사용할 변수들을 정의 해놓은 파일입니다.

LOG_DIR=logback/logs
LOG_PATTERN=[%-5level] %d{yyyy-MM=dd HH:mm:ss} [%thread] [%logger{40}:%line] - %msg%n

LOG_DIR : 로그 파일을 저장해놓을 경로

LOG_PATTERTN : 로그를 남길 패턴

 

logback-spring-prod.xml

<included>
   <property resource="logback-variables.properties" />
    <appender name="REQUEST1" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_DIR}/request1.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_DIR}/archive/request1.%d{yyyy-MM-dd}_%i.log</fileNamePattern>
            <maxFileSize>1KB</maxFileSize>  <!-- 로그파일 최대 크기 -->
            <maxHistory>30</maxHistory> <!-- 로그파일 최대 보관주기 (단위 : 일) -->
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>
                [REQUEST1] ${LOG_PATTERN}
            </pattern>
            <outputPatternAsHeader>true</outputPatternAsHeader>
        </encoder>
    </appender>

    <appender name="REQUEST2" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_DIR}/request2.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_DIR}/archive/request2.%d{yyyy-MM-dd}_%i.log</fileNamePattern>
            <maxFileSize>10KB</maxFileSize>  <!-- 로그파일 최대 크기 -->
            <maxHistory>30</maxHistory> <!-- 로그파일 최대 보관주기 (단위 : 일) -->
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>
                [REQUEST1] ${LOG_PATTERN}
            </pattern>
            <outputPatternAsHeader>true</outputPatternAsHeader>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="REQUEST1" />
        <appender-ref ref="REQUEST2" />
    </root>
</included>

위에서 정의해놓은 변수들을 사용하려면 property 를 통해 경로를 적어주어야합니다.

로그백 설정하는 방법은  동일하지만 저번글과 다른 속성들을 설명하겠습니다.

 

<appender name="REQUEST1" class="ch.qos.logback.core.rolling.RollingFileAppender">

파일을 설정에따라 나누어 저장한다는 의미 입니다.

 

<file>${LOG_DIR}/request1.log</file>

위에서 설정한 변수를 주입받아 로그파일의 저장 위치와 이름을 정의해 주는 곳입니다.

 

 

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <fileNamePattern>${LOG_DIR}/archive/request1.%d{yyyy-MM-dd}_%i.log</fileNamePattern>
    <maxFileSize>1KB</maxFileSize>  <!-- 로그파일 최대 크기 -->
    <maxHistory>30</maxHistory> <!-- 로그파일 최대 보관주기 (단위 : 일) -->
</rollingPolicy>

파일의 경로와 이름을 설정해주는곳입니다.

위에서의 경로와 다른 점은 여기서 설정한 maxFileSize를 통해 ${LOG_DIR}/request1.log 로 최초에 저장되지만 

maxFileSize가 넘어가면 여기에 설정해놓은 경로와 파일 이름으로 저장되게 됩니다.

 

<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    <pattern>
        [REQUEST1] ${LOG_PATTERN}
    </pattern>
    <outputPatternAsHeader>true</outputPatternAsHeader>
</encoder>

 

로그를 남길 때 로그의 패턴을 정의 해주는 곳입니다.

outputPatterAsHeader 는 로그 파일의 제일 윗부분에 패턴을 로그로 남기게 됩니다.

 

 

 

 

 

 

 

728x90

'Spring Boot > Logback' 카테고리의 다른 글

Logback 커스텀하게 사용하기  (0) 2023.01.15
Logback 설정하기  (0) 2023.01.15

댓글