在 log4j 1.2 到 log4j 2 的迁移中,如何处理 DailyRollingFileAppender 类?

Posted

技术标签:

【中文标题】在 log4j 1.2 到 log4j 2 的迁移中,如何处理 DailyRollingFileAppender 类?【英文标题】:In log4j 1.2 to log4j 2 migration, what to do with the DailyRollingFileAppender class? 【发布时间】:2015-09-02 04:20:16 【问题描述】:

我正在将一个 Java 项目从使用 log4j 1.2 进行日志记录迁移到使用 log4j 2。

log4j 1.x 有一个 org.apache.log4j.DailyRollingFileAppender 类,在我的项目的 log4j.properties 配置文件中提到。 log4j 2中不再存在同名DailyRollingFileAppender的类。我想知道DailyRollingFileAppender的角色是否可以被其他一些类或log4j 2中的一些替换配置或实现替换。

迁移指南强调应用程序不能访问 log4j 1.x 内部的方法和类,例如 Appenders 才能迁移到 log4j 2。但是为了进行迁移,可以做些什么来DailyRollingFileAppender?是否可以通过一些自定义配置或 log4j 2 中的类组合来替换它?有some configuration examples in the migration guide,特别是FileAppender,但是DailyRollingFileAppender呢?这与基本的FileAppender 相当接近:

来自log4j 1.2 API Javadoc,班级org.apache.log4j.DailyRollingFileAppender

DailyRollingFileAppender 扩展了 FileAppender,以便基础文件以用户选择的频率滚动。观察到 DailyRollingFileAppender 出现同步问题和数据丢失。 log4j extras 伴侣包括新部署应考虑的替代方案,并在 org.apache.log4j.rolling.RollingFileAppender 的文档中进行了讨论。

【问题讨论】:

你找到这个问题的答案了吗? 【参考方案1】:

您正在寻找 RollingFile 附加程序

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

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

请注意,目前不支持限制超过某个日期或期限等的日志文件数量。您只能限制每个时间段的日志文件数量。

【讨论】:

你需要删除 fileName="log/daily.log" @HahaTTpro 为什么?

以上是关于在 log4j 1.2 到 log4j 2 的迁移中,如何处理 DailyRollingFileAppender 类?的主要内容,如果未能解决你的问题,请参考以下文章

将 log4j 1.2.x 迁移到 log4j 2.16.0

Log4j 1.x到Log4j 2.1.1迁移问题

将 log4j.properties 文件从 Log4j 版本 1 迁移到 2 的合适指南

从 log4j 1.2.17 迁移后的 log4j 2.2 问题

从 log4j 迁移到 logback

将项目从 log4j 迁移到 slf4j+log4j