java - log4j2 SizeBasedTriggeringPolicy 每分钟创建文件

标签 java log4j log4j2

我有一个 log4j2.xml,其中一个 appender 如下所示:

        <RollingFile name="performance" 
            filePattern="/logs/myapp/myapp.%d{yyyy-MM-dd}.%i.perf.log"
            append="true">
            <Policies>
                <CronTriggeringPolicy schedule="0 * * * * ?" evaluateOnStartup="true"/>
                <SizeBasedTriggeringPolicy size="500 MB"/>                  
            </Policies>
        </RollingFile>

所以我的想法是让 crontrigger 策略每天创建一个新的日志文件,但也设置为当文件大小达到 500 MB 时在当天滚动。

但它会导致每分钟创建一个日志文件,例如

myapp.2018-05-10.1.perf.log

myapp.2018-05-10.2.perf.log

...

myapp.2018-05-10.121.perf.log

不确定,我在这里缺少什么。非常感谢任何帮助/建议。

最佳答案

你的 cron 表达式是错误的。

<RollingFile name="performance" 
        filePattern="/logs/myapp/myapp.%d{yyyy-MM-dd}.%i.perf.log"
        append="true">
        <Policies>
            <CronTriggeringPolicy schedule="0 0 12 1/1 * ? *" evaluateOnStartup="true"/>
            <SizeBasedTriggeringPolicy size="500 MB"/>                  
        </Policies>
    </RollingFile>

这是正确的做法

<RollingFile name="performance" 
    filePattern="/logs/myapp/myapp.%d{yyyy-MM-dd}.%i.perf.log"
    append="true">
    <Policies>
            <OnStartupTriggeringPolicy />
            <SizeBasedTriggeringPolicy size="500 MB" />
            <TimeBasedTriggeringPolicy />
    </Policies>
</RollingFile>

由于文件名使用的模式“app.%d{​​MM-dd-yyyy}.%i.log.gz”,appender 能够理解我们指的是什么时间间隔,这隐含地设置每天滚动并压缩滚动文件。

关于java - log4j2 SizeBasedTriggeringPolicy 每分钟创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50280860/

相关文章:

java - log4j2 健康信息和错误处理

java - 如何在 log4j 的 Log out put 中显示标题?

java - Spring数据,从单向列表中获取实体

linux - 为什么zookeeper不使用我的log4j.properties文件日志目录

java - 关于System.in和stream的问题

java - 线程 "main"java.lang.NoSuchFieldError : TRACE 中的异常

java - hsqldb 内部事件日志配置

java - 自定义 log4j 日志管理器以在所有日志中包含前缀

java - 如何从war文件运行特定的类?

Java:正则表达式模式不起作用