spring boot logback으로 error 로그만 파일로 남기기

25gStroy·2022년 8월 9일
0

Springboot

목록 보기
27/41

logback

해당 라이브러리는 spring-web에 들어있기때문에 따로 의존성을 설정해 둘 필요는 없습니다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="LOGS" value="./logs" />

    <appender name="Console"
        class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
            </Pattern>
        </layout>
    </appender>

    <appender name="RollingFile"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 에러로그를 설정하고 로그의 레벨이 맞으면 onMatch, 아니라면 onMismatch  -->
            <level>error</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <file>${LOGS}/spring-boot-logger.log</file>
        <encoder
            class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
        </encoder>

        <rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily and when the file reaches 10 MegaBytes -->
            <fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <!-- info 레벨부터 콘솔에 출력 -->
    <root level="info">
        <appender-ref ref="RollingFile" />
        <appender-ref ref="Console" />
    </root>


<!--    <root level="error">-->
<!--        <appender-ref ref="RollingFile" />-->
<!--        <appender-ref ref="Console" />-->
<!--    </root>-->

    
    <logger name="com.baeldung" level="error" additivity="false">
        <appender-ref ref="RollingFile" />
        <appender-ref ref="Console" />
    </logger>

</configuration>

property : xml 에서 사용할 변수값 선언
appender : 기능단위 자바로치면 method 격이라고 생각하면됩니다.

위 설정파일에서는 Console이라는 appender에서는 기본적으로 스프링부트를 실행하면 나오는 로그들을 명시해 줬습니다. 그리고 잘 보시면 %black(%d{ISO8601}과 같이 색도 명시해줘서 좀 이쁘게 꾸며봤습니다.

그리고 RollingFile appender에서 로그를 파일로 저장하는 설정을 해 줬는데요 이때 모든 로그를 저장하면 정작 필요한 로그들을 못볼수도 있기때문에 저는 filter 를걸어서 error가 아니면 파일로 남기지 않겠다는 설정을 더 해줬습니다. 이렇게 한후 서버를 실행시키고 일부러 error로그를 남겨 보면 info같이 erorr 레벨이 다른 로그들은 파일에 기록돼 있지 않다가 error 로그만 가로체서 로깅을 할 수 있습니다.

profile
애기 개발자

0개의 댓글