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

2022-09-01 12:11:11

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

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

迁移指南强调,应用程序不得访问 log4j 1.x 内部的方法和类(如 s),以便可以迁移到 log4j 2。但是为了进行迁移,可以做些什么呢?是否可以用一些自定义配置或log4j 2中的类组合来替换它?迁移指南中有一些配置示例,特别是 带有 的配置示例,但是呢?这是相当接近基本的东西:AppenderDailyRollingFileAppenderFileAppenderDailyRollingFileAppenderFileAppender

From log4j 1.2 API Javadoc, classorg.apache.log4j.DailyRollingFileAppender

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


答案 1

您正在寻找滚动文件追加器

<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 个单位,由文件模式中日期查找的最小单位确定。换句话说,如果日期模式是 ,则 interval=1 对应于 1 个月的展期。d{MMyyyy}

请注意,目前不支持限制在特定日期或期限等之后保留的日志文件的数量。您只能限制每个时间段的日志文件数。


答案 2

推荐