当前位置: 首页 > 知识库问答 >
问题:

Log4j2每日日志文件

陶健
2023-03-14

我希望由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属性中移除日期模式可以修复此问题,但当前文件的名称中没有日期。

我在Tomee7.0.1上运行这个。

共有1个答案

弘志勇
2023-03-14

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

如果是这样,请评论那张JIRA票。如果您能够提供一个补丁(理想情况下使用单元测试),它很可能很快得到解决。

 类似资料:
  • 我在研究这个问题时发现的几乎所有内容都是针对Log4J1.x的,并讨论了一个似乎在2.0中不存在的datePattern参数。 下面是我的log4j2.xml文件: 我正在将信息和以上内容写入日志文件,并将调试写入控制台(目前)。这些文件被写得很好,但它们似乎每天都在滚动(这似乎是默认的)。

  • 我有将日志保存到文件配置,但日志会附加到现有内容。我想创建总是新的文件。我怎么能那样做? 我的log4j2.xml:

  • 我按照这里的教程SpringEureka教程创建了一个基本的Eureka注册表jar应用程序。下一步是将日志记录更改为log4j2,这样我就可以使用Spring log4j2指南中的指南获得一个滚动文件。 我遇到的问题是,当我运行应用程序时,没有抛出错误,但是 eureka服务器日志仍会输出到控制台 已创建自定义日志输出文件“eureka.log”,但该文件为空 我编写的任何自定义日志,例如

  • 我是Log4J2的新手。我正在尝试配置一个使用slf4j和LOG4J2的日志记录系统。

  • 问题内容: 我当前正在创建一个可以包含模块的系统(将它们视为插件),其中每个模块可以拥有自己的专用日志。 我想使用log4j2项目进行日志记录,但是文件附加器似乎有些麻烦。 主项目(整个模块的模块加载器和“核心”)应具有自己的日志文件,而模块应具有自己的日志文件(如)。 通过阅读有关追加程序的文档,我发现了该类,并且我将使用它。直到我发现不能简单地将追加器添加到由创建的默认记录器中。 LogMan

  • 我目前正在创建一个系统,可以有模块(把它们看作插件),其中每一个都可以有自己的日志,专用的。 我想使用log4j2项目进行日志记录,但我似乎在文件附加符方面遇到了一些麻烦。 主项目(模块加载器和整个事情的“核心”)应该有自己的日志文件,而模块应该有自己的日志文件(像)。 即使搜索也没有给我提供任何接近的解决方案,我找到的只是xml配置中预定义的文件日志--这不是我想要的。 感谢你的阅读;即使是最轻