在 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 内部的方法和类,例如 Appender
s 才能迁移到 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.properties 文件从 Log4j 版本 1 迁移到 2 的合适指南