Spring

logging

yougeun 2023. 3. 14. 20:26
728x90

application.properties를 이용한 간단한 로깅 방법

#전체 로그 레벨 설정(기본:info)
logging.level.root = info

#com.inflearn,springmvc_basic의 패키지와 그 하위 로그 레벨 설정
#Level: trace -> debug -> info -> warn -> error  개발서버:debug 운영서버:info
logging.level.com.inflearn.springmvc_basic = debug

#test 로그 파일이 남을 경로
logging.file.name = C:/Users/My PC/test

logback-spring.xml를 이용한 로깅 방법

logback-spring.xml 파일은 resources에 존재해야한다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
 
    <!-- 로그 파일이 저장될 경로 -->
    <property name="LOG_PATH" value="C:/Users/My PC"/>
 
    <!-- 로그 파일 이름 -->
    <property name="LOG_FILE_NAME" value="testLog"/>
 
    <!-- 로그 출력 패턴 -->
    <property name="LOG_PATTERN" value="%highlight(%-5level) %d{yy-MM-dd HH:mm:ss} [%thread] [%logger{0}:%line] - %msg%n"/>
 
    <!-- 로그 레벨 -->
    <!--
    	1) ERROR : 오류 메시지 표시
        2) WARN  : 경고성 메시지 표시
        3) INFO  : 정보성 메시지 표시
        4) DEBUG : 디버깅하기 위한 메시지 표시
        5) TRACE :  Debug보다 훨씬 상세한 메시지 표시
 
        아래에서는 info로 설정하였는데, 이 경우엔 INFO 보다 위에 있는 DEBUG와 TRACE는 표시하지 않는다.
    -->
    <property name="LOG_LEVEL" value="info"/>
 
    <!-- CONSOLE에 로그 출력 세팅 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                ${LOG_PATTERN}
            </Pattern>
        </layout>
    </appender>
 
    <!-- File에 로그 출력 세팅 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 파일 경로 설정 -->
        <file>${LOG_PATH}/${LOG_FILE_NAME}.log</file>
 
        <!-- 출력패턴 설정-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
 
        <!-- Rolling 정책 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- .gz,.zip 등을 넣으면 자동 일자별 로그파일 압축 -->
            <fileNamePattern>${LOG_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}_%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 파일당 최고 용량 kb, mb, gb -->
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!-- 일자별 로그파일 최대 보관주기(~일), 해당 설정일 이상된 파일은 자동으로 제거-->
            <maxHistory>30</maxHistory>
            <!--<MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>-->
        </rollingPolicy>
    </appender>
 
    <!-- 로그 전역 세팅 -->
    <root level="${LOG_LEVEL}">
        <!-- 위에 설정한 콘솔 설정 추가 -->
        <appender-ref ref="CONSOLE"/>
 
        <!-- 위에 설정한 파일 설정 추가 -->
        <appender-ref ref="FILE"/>
    </root>
</configuration>

 

Reference

https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.logging

 

Core Features

Spring Boot lets you externalize your configuration so that you can work with the same application code in different environments. You can use a variety of external configuration sources including Java properties files, YAML files, environment variables, a

docs.spring.io

 

728x90