Java 如何在log4j2文件名中使用当前日期模式? %d{yyyy-MM-dd} //...

Java 如何在log4j2文件名中使用当前日期模式? %d{yyyy-MM-dd} //...,java,tomcat,log4j,log4j2,Java,Tomcat,Log4j,Log4j2,我想直接在书面日志文件中使用当前日期。但是上面配置的结果是application-%{yyyy-MM-dd}作为文件名 为什么没有解析日期占位符? 顺便说一下:午夜重命名的文件被正确重命名,如application-2016-03-13-rolled.log。为什么它在那里工作,但不在当前日志文件中 我正在运行tomcat 8和java 8,如果这很重要的话。我不知道为什么占位符没有被解析,但这是我的工作配置: <?xml version="1.0" encoding="UTF-8"?&g

我想直接在书面日志文件中使用当前日期。但是上面配置的结果是
application-%{yyyy-MM-dd}
作为文件名

为什么没有解析日期占位符? 顺便说一下:午夜重命名的文件被正确重命名,如
application-2016-03-13-rolled.log
。为什么它在那里工作,但不在当前日志文件中


我正在运行
tomcat 8
java 8
,如果这很重要的话。

我不知道为什么占位符没有被解析,但这是我的工作配置:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Properties>
        <property name="filePattern">%d{yyyy-MM-dd}</property>
    </Properties>
    <Appenders>
        <RollingFile name="TEST" fileName="application-${filePattern}.log" filePattern="application-${filePattern}-rolled.log">
            <Policies>
                <TimeBasedTriggeringPolicy modulate="true"/>
            </Policies>
        </RollingFile>
    </Appenders>
    //...
</Configuration>

这一个有效(无论是什么原因):

${日期:yyyy-MM-dd}

删除文件名属性。这对我有用。(从:)这是我的工作配置

<property name="filePattern">${date:yyyy-MM-dd}</property>

对于使用Log4j2版本2.6.2及以下版本的用户:

文件名实际上是一个文件名,当 应用程序正在运行。如果不希望此行为升级到 Log4j 2的最新版本,不指定文件名 属性


是的,这对我来说很好:我必须这样定义我的appender:
<property name="filePattern">${date:yyyy-MM-dd}</property>
    <RollingFile name="File" filePattern="${basePath}/api_test_execution_log_%d{yyyy-MM-dd}_%d{HH-mm-ss}_%i.log" immediateFlush="true">
       <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>

       <Policies>
            <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            <SizeBasedTriggeringPolicy size="32 MB" />
            <OnStartupTriggeringPolicy/>
       </Policies>
    </RollingFile>