【问题标题】:How to use current date pattern in log4j2 fileName?如何在 log4j2 文件名中使用当前日期模式?
【发布时间】:2016-03-14 08:17:20
【问题描述】:
<?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>

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

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

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

【问题讨论】:

    标签: java tomcat log4j log4j2


    【解决方案1】:

    删除文件名属性。它对我有用。 (从https://issues.apache.org/jira/browse/LOG4J2-1859得到解决方案)这是我的工作配置

        <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>
    

    【讨论】:

    • 我可以将它与最多保留 15 个文件结合起来吗? DefaultRolloverStrategy 导致 :: RollingFileAppender 'MyAppender': When no file name is provided a DirectFileRolloverStrategy must be configured
    【解决方案2】:

    这个工作(为什么):

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

    【讨论】:

    • 是的,这对我来说很好:我必须这样定义我的附加程序:
    【解决方案3】:

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

      <Appenders>
        <RollingFile 
            name="Permament" 
            fileName="E:/workspace/myproject/logs/ergo.log"
            filePattern="E:/workspace/myproject/logs/ergo.%d{yyyy-MM-dd.HH:mm}.log"
            immediateFlush="true">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %5p{length=5} - %c{1} %m %ex%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
            </Policies>
        </RollingFile>
    

    【讨论】:

      【解决方案4】:

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

      fileName 确实是一个永远不会改变的文件名,而 应用程序正在运行。如果您不希望此行为升级到 最新版本的 Log4j 2 并且不指定文件名 属性。

      来自https://issues.apache.org/jira/browse/LOG4J2-1859

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-16
        • 1970-01-01
        • 2017-05-12
        • 1970-01-01
        • 2016-01-06
        • 2021-09-03
        相关资源
        最近更新 更多