Log4j2每日日志文件

标签 log4j2 apache-tomee

我希望 log4j2 创建的日志文件的文件名中包含日期模式,包括当前事件文件。也就是说,如果今天的日期是 2016-12-15,我希望当前的日志文件为 lager-2016-12-15.log。当日期更改时,我希望创建一个名为 lager-2016-12-16.log 的新文件。

使用 RollingFileAppender 我无法让当前事件日志文件的文件名中包含日期模式。我的 Log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Properties>
        <Property name="layoutPattern">%d{ISO8601} [%t] %-5p [%X{REQUEST_ID}] [%X{CLIENT_ID}] [%X{USER_ID}] %c- %m%n</Property>
        <Property name="logDir">${sys:catalina.home}/logs/</Property>
        <Property name="fileName">${logDir}lager-${date:yyyy-MM-dd-HHmm}.log</Property>
        <Property name="filePattern">${logDir}lager-%d{yyyy-MM-dd-HHmm}.log</Property>
    </Properties>
    <Appenders>
        <RollingFile name="LAGER" append="true"
                 fileName="${fileName}"
                 filePattern="${filePattern}">
            <PatternLayout pattern="${layoutPattern}" charset="UTF-8"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            </Policies>
        </RollingFile>
    </Appenders>
    <loggers>
        <Logger name="org.apache.catalina.core.ContainerBase.[Catalina].[localhost]" level="WARN" additivity="false">
            <AppenderRef ref="LAGER" />
            <AppenderRef ref="CONSOLE"/>
        </Logger>
        <Root level="INFO">
            <AppenderRef ref="LAGER"/>
            <AppenderRef ref="CONSOLE"/>
        </Root>
    </loggers>
</Configuration>

使用此配置,滚动时的复制会变得困惑。从 fileName 属性中删除日期模式可以解决此问题,但当前文件的名称中没有日期。

我在 tomee 7.0.1 上运行它。

最佳答案

可能已经有一个未完成的功能请求。这符合您的要求吗? https://issues.apache.org/jira/browse/LOG4J2-1101

如果是这样,请评论该 JIRA 票证。如果您能够提供补丁(最好通过单元测试),它可能会很快得到解决。

关于Log4j2每日日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41160418/

相关文章:

java - 如何一起使用 log4j 2.0 和 slf4j 以及 Commons Logging

tomcat - 为什么 Log4j2 JsonLayout + KeyValuePair 打印空的 logEvent 消息

spring-boot - 如何让 AWS Lambda 和 Spring Boot 2.1.5 使用 Log4j2.xml 并登录到 Cloudwatch?

java - 如何在 Hibernate 中使用 TomEE

jpa - 无法在事务 : enlistResource returns 'false' 中登记连接

xml - Log4j 2 配置 : XML vs JSON?

java - Logback 中的 Log4j2 标记

java - 如何使用 Entity Manager 和 GenericDao Bean 和 Tomee 来持久化对象

java - 我应该使用哪个 InitialContextFactory?

java - Tomcat 8.5.33 上的 REST 应用程序部署问题