0
私はwebappに次のlog4j RollingFileアペンダーを使用します。 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>
、ログがロールオーバーされると、古いファイルはそのすべての古いファイルの名前を変更する必要があります、(%のIと指定された)インデックス番号のファイル名にリネーム取得し、保存しなければなりません。
次のコードを使用してログをプログラムでロールオーバーします。
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
によると改名されていない)とログが新しいファイルに継続されます。
ここで問題が発生する可能性がありますか?