개발은 하는건가..

[lo4j2] 로그 파일로 생성되게 하기 본문

SpringBoot , Thymeleaf

[lo4j2] 로그 파일로 생성되게 하기

수동애비 2023. 6. 9. 12:43
반응형

build.gradle 에 configurations 에 아래와 같이 추가

configurations {
    all {
        exclude group: 'org.apache.logging.log4j', module: 'log4j-to-slf4j'
        exclude group: 'ch.qos.logback', module: 'logback-classic'
    }
}

dependencies 에 아래와 같이 추가

implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.15.0'
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.15.0'
implementation group: 'org.apache.logging.log4j', name: 'log4j-jul', version: '2.15.0'
implementation group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.15.0'
implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.32'
implementation group: 'org.slf4j', name: 'jul-to-slf4j', version: '1.7.32'


application.properties 에 로그 환경 파일 경로 지정

# 윈도우즈 환경일 경우
logging.config=src/main/resources/log4j2.xml

# 리눅스 환경 일 경우 
logging.config=classpath:/log4j2.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>    
    <Properties>
    	<!-- 로그가 저장될 경로를 속성으로 지정 -->
        <property name="LOGS_PATH">/usr/wms_server/server/logs</property>
    </Properties>

    <Appenders>        
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}:%-3relative] %-5level %logger{35} - %msg%n" />
        </Console>
        
        <!-- 로그 파일 생성 분할 규칙 50MB 단위로 압축 및 1일 단위 분할 -->
        <RollingFile name ="RollingFile">
            <FileName>${LOGS_PATH}/chungho_wms.log</FileName>
            <FilePattern>${LOGS_PATH}/chungho_wms.%d{yyyy-MM-dd}.%i.log.gz</FilePattern>
            <PatternLayout>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss} %5p [%c] %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="50MB"/>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            </Policies>
            
			<DefaultRolloverStrategy max="7" fileIndex="max" >
		  		<Delete basePath=${LOGS_PATH} maxDepth = "1">
		  			<!-- 3일이 경과한 로그파일은 자동 삭제 -->
		  			<IfLastModified age = "3d"/>
		  		</Delete>
			</DefaultRolloverStrategy>
        </RollingFile>
    </Appenders>

    <Loggers>
        <!-- FATAL, ERROR, WARN, INFO, DEBUG, TRACE -->
        <Root level="INFO">
            <AppenderRef ref="console" />
            <AppenderRef ref="RollingFile" />
        </Root>
    </Loggers>
</Configuration>

TimeBasedTriggeringPolicy의 interval 값은 파일명 패턴의 날짜 단위 최소값으로 계산된다.
위의 경우 년-월-일 시간을 가지므로 최소값인 일단위로 동작하므로  1로하면 1일에 한번씩 분할하여 압축된다..

 

Comments