如何为log4j2使用多个配置文件

use*_*295 4 java xml logging xinclude log4j2

我正在编写测试Java库的Java代码.该库包含自己的log4j2配置作为分发的一部分.

我想在我的测试代码中使用log4j2而不修改库的配置.

有没有办法为我的测试代码提供单独的log4j2配置?

这一切都作为命令行Java运行,根本没有服务器或Web参与.

编辑试图更清楚:我想要的是能够配置记录器,appender等供测试代码使用,同时让库代码使用自己独立的配置文件进行日志记录.我的想法是在我的测试代码中使用log4j2,但无需更改库的配置文件.由于库配置文件是库分发的一部分,我不想更改它以进行测试.

Rem*_*pma 6

这可能会有所帮助:

  • Log4j2将首先在类路径中查找log4j2-test.xml
  • 如果找不到该文件,它将在类路径中查找log4j2.xml

因此,一种选择是将库的配置(log4j2.xml)复制到log4j2-test.xml,并将您自己的配置添加到log4j2-test.xml.

此外,Log4j2 支持XML配置中的XInclude,因此您可以使用该功能来避免在log4j2-test.xml中复制库的配置.


zen*_*ndu 6

Log4j2 支持完全符合您要求的“复合配置”。您需要做的就是在log4j.configurationFile属性中提供多个文件的路径。这可以从命令行传递或添加到log4j2.component.properties应用程序中的文件中。

参考资料:https : //logging.apache.org/log4j/2.x/manual/configuration.html#CompositeConfiguration https://logging.apache.org/log4j/2.x/manual/configuration.html#SystemProperties