在从log4j 1.2迁移到log4j 2时,如何处理DailyRollingFileAppender类?

30
我正在将一个Java项目从使用log4j 1.2进行日志记录转换为使用log4j 2。在我的项目的log4j.properties配置文件中提到了一个名为org.apache.log4j.DailyRollingFileAppender的类。在log4j 2中不存在同名的类DailyRollingFileAppender。我想知道是否可以用其他类或在log4j 2中进行替换配置或实现来替代DailyRollingFileAppender的作用。
迁移指南强调应用程序不得访问log4j 1.x内部的方法和类,例如Appender,以便将其迁移到log4j 2。但是为了进行迁移,可以对DailyRollingFileAppender做些什么?是否可以通过一些自定义配置或log4j 2中的类组合来替换它?迁移指南中有一些配置示例,特别是一个使用FileAppender的示例,但是DailyRollingFileAppender怎么办?它与基本的FileAppender非常接近。从log4j 1.2 API Javadoc中可以看到,它是一个类org.apache.log4j.DailyRollingFileAppender
DailyRollingFileAppender是一种扩展了FileAppender的工具,可以按用户选择的频率滚动底层文件。但是已经观察到DailyRollingFileAppender存在同步问题和数据丢失的情况。log4j extras companion包含了替代方案,对于新的部署应该考虑使用,并在org.apache.log4j.rolling.RollingFileAppender的文档中进行了讨论。

您解决了这个问题吗? - user3073180
1个回答

32

您正在寻找RollingFile appender

<RollingFile name="DAILY_LOG" fileName="log/daily.log"
                 filePattern="log/%d{ddMMyyyy}_daily.log"
                 >
      <PatternLayout pattern="%d [%7r] %5p - %c - %m%n"/>
      <Policies>
        <TimeBasedTriggeringPolicy interval="1"/>
      </Policies>                               
</RollingFile>

前面的示例是按天滚动的,间隔为1个单位,该单位由文件模式中日期查找的最小单位确定。换句话说,如果日期模式为d{MMyyyy},则间隔= 1对应于1个月的滚动周期。

请注意,目前不支持限制保留超过特定日期或年龄等一定时间的日志文件数量。您只能限制每个时间段内的日志文件数量。


你需要移除 fileName="log/daily.log"。 - Haha TTpro
1
@HahaTTpro 为什么? - ps.pf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接