0
내 webapp에 다음과 같은 log4j RollingFile appender를 사용합니다. filePattern="${env:SYSTEM_LOGS}/${env:LOG_FILE_NAME}.log.%d{yyyy_MM_dd.HH_mm_ss}.%i"
와log4j2 RollingFileAppender 이전 파일이 7 롤 오버 후 제거됨
<Appenders>
<RollingFile name="logFile"
fileName="${env:SYSTEM_LOGS}/${env:LOG_FILE_NAME}.log" immediateFlush="true"
filePattern="${env:SYSTEM_LOGS}/${env:LOG_FILE_NAME}.log.%d{yyyy_MM_dd.HH_mm_ss}.%i">
<PatternLayout pattern="%d{yyyyMMdd-HHmmss.SSS}|%X{username}|%-5p|%t| %-100m (%c{1})%n"/>
<Policies>
<OnStartupTriggeringPolicy/>
</Policies>
</RollingFile>
</Appenders>
, 로그가 롤오버 될 때, 이전 파일은 그래서 모든 이전 파일의 이름을 변경을하셔야합니다, (%의 난으로 지정) 인덱스 번호와 파일 이름으로 이름이 변경됩니다 보존되어야한다.
다음 코드를 사용하여 프로그래밍 방식으로 로그를 롤오버합니다.
org.apache.logging.log4j.Logger logManagerLogger = LogManager.getLogger();
Map<String, org.apache.logging.log4j.core.Appender> appenders = ((org.apache.logging.log4j.core.Logger) logManagerLogger).getAppenders();
appenders.forEach((appenderName, appender) -> {
if (appender instanceof RollingFileAppender) {
LOGGER.info("Switching log for appender " + appenderName);
((RollingFileAppender) appender).getManager().rollover();
}
});
그러나, 7 롤오버 후, 기존 파일이 제거됩니다 (지정된 filePattern
에 따라 이름이 변경되지 않음) 새 파일에 계속 로그.
여기에 어떤 문제가있을 수 있습니까?