Spring | .log 파일로 로그 기록 남기기

바다·2024년 5월 28일
0

Spring

목록 보기
7/13
post-thumbnail

로그를 파일로 남기는 이유

지금까지 남겨진 로그는, 콘솔에서만 확인 가능한 로그였다!

개발자는 로깅을 통해 사용자의 행동에 대한 통계 및 분석을 확인할 수 있으며, 예상치 못한 문제가 발생했을 때 당시 정보를 파악할 수 있는 등, 여러 방면으로 기록된 로그 를 활용할 수 있다

하지만, 로그를 남기는 것에도 리소스적인 비용이 발생하기 때문에 무조건 로그를 많이 남기는 것보다는 운영되는 시스템에 맞게 적절한 로그만을 남기는 것이 좋다


logback-spring.xml 파일을 통한 로깅

logback-spring.xml은 로글성 데이터에 대한 상세 설정이 필요할 때 사용되는 파일

스프링 부트를 사용한다면 src/main/resources 경로에 있는 해당 파일을 참조해서 로그에 대한 설정을 하게 된다

이 때, 스프링 부트에서 로깅 관련 설정을 읽어 들이는 순서가 굉장히 중요하다

  1. classpath(resources 디렉터리 아래)에 logback-spring.xml 파일이 있으면 해당 파일의 설정을 읽습니다.
  2. logback-spring.xml 파일이 없는 경우 .properties(또는 .yml) 파일의 설정을 읽습니다.
  3. logback-spring.xml 파일과 .properties(또는 .yml) 파일이 동시에 있을 경우 .properties(또는 .yml) 파일의 설정이 적용된 후 logback-spring.xml 파일의 설정이 적용됩니다.

나는 이 3번에 대한 내용을 제대로 인지하지 못해서,

  • 콘솔에는 로그가 찍히는데 .log 파일에는 로그가 찍히지 않는 상황
  • 로그 파일에는 로그가 찍히는데 콘솔에는 안 찍히는 상황
  • 콘솔에 INFO 레벨의 로그가 찍히지 않는 상황
  • 로그 파일에 INFO 레벨의 로그도 찍히는 상황

이 외에도 정말 기가막힌 등등..🫨 의 상황을 겪었다

나는 콘솔에는 INFO 레벨부터 찍히고,
로그 파일에는 ERROR 레벨부터 찍히게 하고 싶었다

application.yml

logging:
  level:
    root: info

일단, yml 파일에 logging level을 info로 설정하여서 콘솔에는 INFO 레벨의 로그부터 찍히도록 하였고

lockback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } --- [%t] %-40.40logger{39} : %m%n</pattern>
        </encoder>
    </appender>
  
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <file>./logs/error.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } --- [%t] %-40.40logger{39} : %m%n%wex</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>./logs/archived/error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>

    <root level="error">
        <appender-ref ref="file"/>
    </root>
</configuration>

logback-spring.xml 파일의 설정에서는
파일에 저장되는 로그는 ERROR부터 찍힐 수 있도록 명시해두었다!


이렇게 설정했더니 정말 언제 그랬냐는 듯... 말짱해짐... 🙄
logback-spring.xml 파일 작성 방식을 더 많이 찾아보아야 할 것 같다

profile
ᴘʜɪʟɪᴘᴘɪᴀɴs 3:14

0개의 댓글