首页 > 解决方案 > Log4j2:我无法创建空日志文件

问题描述

我想每天创建一个日志文件。它可以工作,但我也希望生成空文件(0 kb,没有数据)。目前,空文件被覆盖。也许我应该使用“minSize”,但我找不到有关如何在 log4j2.properties 文件中编写它的文档。我的 log4j2 属性文件包含以下内容:

    appender.dss-b05-log.type=RollingFile
    appender.dss-b05-log.name=B05Log
    appender.dss-b05-log.fileName=myFolder/B05_my_log.txt
    appender.dss-b05-log.filePattern=myFolder/B05_my_log_D%d{yyyyMMdd}.txt
    appender.dss-b05-log.layout.type=PatternLayout
    appender.dss-b05-log.layout.pattern=%m%n
    appender.dss-b05-log.policies.type=Policies
    appender.dss-b05-log.policies.cron.type=CronTriggeringPolicy
    appender.dss-b05-log.policies.cron.schedule=0 0 0 * * ?
    appender.dss-b05-log.policies.cron.evaluateOnStartup=true

标签: logginglog4jlog4j2

解决方案


你应该调查一下CronTriggeringPolicy。这是一个小例子:

log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" filePattern="logs/app-%d{yyyy-MM-dd-HH}-%i.log">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <CronTriggeringPolicy schedule="0/5 * * * * ?"/>
                <SizeBasedTriggeringPolicy size="250 MB"/>
            </Policies>
            <DirectWriteRolloverStrategy maxFiles="10"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
</Configuration>

编码:

package click.webelement.so;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class LoggingExample {
    static final Logger LOGGER = LogManager.getLogger(LoggingExample.class);
    public static void main(String[] args) {
        while(true){
            LOGGER.info("Test - " + System.currentTimeMillis());
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

您可以看到每个第二个文件都是空的。


推荐阅读