首页 新闻 会员 周边

log4j2压缩文件名称错误

1
悬赏园豆:100 [待解决问题]

问题描述

现在我有一个java程序使用log4j2管理日志,我在log4j2.xml中配置日志文件的名称根据日志动态生成。现在的问题是日志文件和文件夹的名称正确,但是日志压缩文件名称中的日期区却是错误的。
情况如下图:

文件夹名称[2020-07-13]是正确的,而压缩文件名称中的日期却是[2020-05-11]。

logj2.xml中的配置

<!-- 常规日志 -->
<RollingFile name="rollingFile_info"
    fileName="${LOG_HOME}/info.log"
    filePattern="${LOG_HOME}/${date:yyyy-MM-dd}/info-%d{yyyy-MM-dd}-%i.log.gz">
    <!-- 输出级别 -->
    <Filters>
        <!-- 限制日志级别在info及以上在error以下 -->
        <!-- error级别以下 -->	
        <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
        <!-- info级别以上 -->
        <ThresholdFilter level="info" onMatch="accept" onMismatch="deny"/>
    </Filters>

    <!-- 输出格式 -->
    <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>

    <!-- 封存策略 -->
    <Policies>
        <!-- 文件大小 超出后自动封存 -->
        <SizeBasedTriggeringPolicy size="5MB"/>
        <!-- 时间间隔 -->
        <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
    </Policies>
</RollingFile>
littleFatty的主页 littleFatty | 初学一级 | 园豆:102
提问于:2020-07-13 14:51
< >
分享
所有回答(2)
0

这一句的filePattern="${LOG_HOME}/${date:yyyy-MM-dd}/info-%d{yyyy-MM-dd}-%i.log.gz">
${date:yyyy-MM-dd}
%d{yyyy-MM-dd}
区别在哪里?你仔细看一下。
而且日期相差近俩月,可以排除时区的问题。执行环境都是本地吗

Ctrl` | 园豆:3317 (老鸟四级) | 2020-07-13 17:21

配置文件是从网上找到的播客中复制过来的,${date:yyyy-MM-dd}和%d{yyyy-MM-dd}我不太了解,刚刚在网上也没找到相关说明。不过我测试了一下,如果使用${date}替代%d{}那么程序将无法运行。
应该和执行环境无关,我在自己的电脑和同事的电脑都测试了一下,都存在相同的问题。

支持(0) 反对(0) littleFatty | 园豆:102 (初学一级) | 2020-07-13 17:49
0

确实好奇怪,今天15号,这个错误的日期也会变成5-13吗?

终极大法,debug一下吧。

Timetombs | 园豆:3954 (老鸟四级) | 2020-07-15 08:21

并不会,错误日志还是5月11号。这个程序已经运行了一段时间,在检查错误时才发现最近一段时间的日志压缩文件命名都是5月11号。

支持(0) 反对(0) littleFatty | 园豆:102 (初学一级) | 2020-07-15 09:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册