로그를 남기는게 중요하다는것은 저번글에서 알아보았습니다.
그럼 이제 로컬 환경말고 운영 및 개발 환경에서의 로그를 남기는 법에 대해서 알아보겠습니다.
로컬에서는 인텔리제이로 스프링부트 서버를 시작하게되면 인텔리제이 콘솔에 로그를 확인할수있지만
실제 운영서버를 띄운다면 콘솔을 확인 할 수 없습니다.
그렇기 때문에 파일로 저장해놓은뒤 파일에 적힌 로그들을 확인해야합니다.
이제 파일로 로그를 저장하는 법에 대해서 알아보겠습니다.
프로젝트 구성

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 는 로그 파일의 제일 윗부분에 패턴을 로그로 남기게 됩니다.
'Spring Boot > Logback' 카테고리의 다른 글
Logback 커스텀하게 사용하기 (0) | 2023.01.15 |
---|---|
Logback 설정하기 (0) | 2023.01.15 |
댓글