Log4j2 - 将存档添加到当前配置

Posted

技术标签:

【中文标题】Log4j2 - 将存档添加到当前配置【英文标题】:Log4j2 - Add Archive to current config 【发布时间】:2020-09-17 11:19:25 【问题描述】:

我想将自动归档(删除)添加到我的日志文件中,但我很难找到一个我理解并可以添加到我当前配置中的 xml 示例。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%dDEFAULT - %msg%n"/>
    </Console>
    <RollingFile name="RollingFile" fileName="./logs/AutoLab.log" 
   filePattern="./logs/$$date:yyyy-MM/app-%dMM-dd-yyyy-%i.log.gz">
      <PatternLayout pattern="%dDEFAULT - %msg%n"/>
      <Policies>
        <TimeBasedTriggeringPolicy/>
        <SizeBasedTriggeringPolicy size="100 MB"/>
      </Policies>
       <DefaultRolloverStrategy max="50"/>
</RollingFile>
  </Appenders>
  <Loggers>
    <Root level="DEBUG">
      <AppenderRef ref="Console"/>
      <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>

以上是我当前的配置。从我读过的内容来看,我必须小心路径和目录名称,以便我为操作系统使用正确的正斜杠或反斜杠字符。不确定我的安装程序将如何处理。

任何有关自动存档的帮助 - 非常感谢删除语法。

戴夫

【问题讨论】:

【参考方案1】:

您当前的配置表明您希望文件每月滚动一次或当文件大小为 100MB 时。您希望每月最多保留 50 个文件。

请参阅How to delete old logs with log4j2 了解示例

【讨论】:

日志的数量和大小目前并不是我真正关心的问题,我要问的是一种删除旧日志的方法。我想我有一些现在应该工作的东西。我已经修改了我的 xml - 我将在下面发布。【参考方案2】:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%dDEFAULT - %msg%n"/>
    </Console>
    <RollingFile name="RollingFile" fileName="./logs/AutoLab.log" filePattern="./logs/$$date:yyyy-MM/app-%dMM-dd-yyyy-%i.log.gz">
      <PatternLayout pattern="%dDEFAULT - %msg%n"/>
      <CronTriggeringPolicy schedule="0 0 0 * * ?"/>
      <DefaultRolloverStrategy>
        <Delete basePath="$baseDir" maxDepth="2">
          <IfFileName glob="*/app-*.log.gz" />
          <IfLastModified age="14d" />
        </Delete>
      </DefaultRolloverStrategy>
      <Policies>
        <TimeBasedTriggeringPolicy/>
        <SizeBasedTriggeringPolicy size="50 MB"/>
      </Policies>
       <DefaultRolloverStrategy max="10"/>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="DEBUG">
      <AppenderRef ref="Console"/>
      <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>

添加部分用于删除超过 14 天的文件。

【讨论】:

以上是关于Log4j2 - 将存档添加到当前配置的主要内容,如果未能解决你的问题,请参考以下文章

log4j2使用详解

Log4j2 进阶使用

利用 Log4j2 异步保存日志到 MongoDB 中

无法使用TimeBasedTriggeringPolicy存档log4j2中的最后一天日志文件

将 LogStash Log4j 配置升级到 Log4j2

Log4j2 Syslog Appender 添加垃圾字段