如何在log4j2中逐步重新配置?

问题描述 投票:0回答:1

我正在做升级工作从log4j1.2.17到log4j2.12.0。我需要实现与log4j1.x相同的功能。但是,我遇到了一些棘手的问题:

  1. 在log4j1.x中,扩展类FileAppender之后,我可以使用org.apache.log4j.FileAppender#setFile修改当前输出文件。如何在log4j2中setFile

  2. 在log4j1.x中,通过org.apache.log4j.xml.DOMConfigurator#doConfigure,我可以进行incrementally的配置。如何在log4j2中做到这一点?场景如下:首先,我构建了基本的log4j2配置(记录器布局)机智API。然后,我想使用文件log4j2-new.xml根据先前的配置更新配置[[增量地。

java log4j log4j2 appender
1个回答
0
投票
当从Log4j 1迁移到Log4j 2时,人们经常只是查看他们为Log4j 1所做的自定义,然后尝试将其移植到Log4j2。这绝对是错误的方法。

从Log4j 1迁移到Log4j 2时,第一步应该是收集对日志记录的要求。了解这些内容后,您应该查看Log4j 2如何以本地方式实现该功能。 Log4j 2包含许多在Log4j 1中不可用的功能,并且其体系结构非常不同。

如果不知道您要完成的工作,很难回答以上问题。您是否正在尝试在配置运行时更改文件名?在Log4j 2中,文件名在File Appender中是不可变的,因为它不能以线程安全的方式进行更改。但是,您可以使用配置为指向新文件的新FileAppender创建新配置。

您所说的“递增”是什么意思? Log4j 2允许您以几种不同的方式以编程方式创建配置。 Log4j的Programmatic Configuration页记录了如何执行此操作。您要使用log4j2-new.xml增量更新配置是什么意思?您要添加到配置还是替换它? Log4j允许组合配置,因此您可以合并配置。您将首先创建配置,然后创建XMLConfiguration,将它们合并到CompositeConfiguration中,然后将其传递给Configurator类Configurator方法之一。但是,如果需要更改配置文件,这可能会使您难以自动配置。

人们经常发现他们不需要编程配置。 Log4j提供了可动态创建其他附加程序的Appender,可用于根据日志事件中的属性设置记录格式的PatternSelector,可在运行时将值动态注入配置中的Lookups以及其他功能。

同样,在着手从Log4j 1迁移到Log4j 2之前,请先评估您的要求,然后查看Log4j 2的现有功能以确定谁可以满足他们。如果您对此有疑问,请随时在Stackoverflow上提问或向Log4j用户的邮件列表发送电子邮件。

© www.soinside.com 2019 - 2024. All rights reserved.