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

log4j2-限制日志文件的数量

陆昊
2023-03-14

我有下面的log4j2。xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
  <appenders>
    <RollingFile name="testLog" fileName="test.log" filePattern="" append="false">
      <PatternLayout pattern="[%t] %-5level - %msg%n%n"/>
    <SizeBasedTriggeringPolicy size="5mb" />
    </RollingFile>
  </appenders>
  <loggers>
    <logger name="TestsLogger" level="trace" additivity="false">
      <appender-ref ref="testLog"/>
    </logger>
    <root level="debug">
      <appender-ref ref="testLog"/>
    </root>
  </loggers>
</configuration>

如何修改此配置,以便

>

creating test1.log [present log files: test1.log]
test1.log - 5mb limit reached
creating test2.log [present log files: test1.log, test2.log]
test2.log - 5mb limit reached
creating test3.log [present log files: test2.log, test3.log]
test3.log - 5mb limit reached
creating test4.log [present log files: test3.log, test4.log]
and so on

有人知道如何实现这样的目标吗?当然,如果单独使用log4j2就可以实现这样的事情,那就太好了。但是也许有一种方法可以将log4j2与某种外部程序结合起来,该程序将与主Java应用程序一起运行,并删除多余的日志文件,同时保持最后两个日志文件完好无损。所以如果有人对1有至少的建议。,它可能已经是我正在寻找的。因为我也许能为第二部分写一个程序。当然,如果第二部分也能用log4j2完成,那就太棒了。

共有1个答案

鲍俊杰
2023-03-14

到目前为止,我从未使用过log4j2,但是RollingFileAppender的文档为您提供了许多配置示例。

有趣的是,你的接缝是这样的东西(使用DefaultRolloverStrategy):

<RollingFile name="RollingFile" fileName="logs/app.log"
             filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
  <PatternLayout>
    <pattern>%d %p %C{1.} [%t] %m%n</pattern>
  </PatternLayout>
  <Policies>
    <SizeBasedTriggeringPolicy size="5 MB"/>
  </Policies>
  <DefaultRolloverStrategy max="20"/>
</RollingFile>
 类似资料:
  • 我希望由log4j2创建的日志文件在其文件名中包含日期模式,包括当前活动文件。也就是说,如果今天的日期是2016-12-15,我希望当前日志文件是lager-2016-12-15.log。当日期改变时,我希望创建一个名为lager-2016-12-16.log的新文件。 使用,我无法使当前活动日志文件的文件名中具有日期模式。我的log4j2.xml: 使用此配置,翻转时的复制被搞乱了。从fileN

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

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

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

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

  • 我正在使用带有log4j2的Spring Boot1.5.9,当我测试日志记录功能时,创建了日志文件,但没有将日志写入其中,而控制台日志记录程序运行良好。请在pom.xml&log4j2.properties配置下面找到。 log4j2.properties文件: