【问题标题】:Log4j 1 and 2 - Custom appenders from two Log4J versions writing to the same file simultaneouslyLog4j 1 和 2 - 来自两个 Log4J 版本的自定义附加程序同时写入同一个文件
【发布时间】:2017-07-03 11:12:59
【问题描述】:
我想从 Log4J 1.x 迁移到 Log4J 2,但同时我想保留 Log4J 以支持使用 Log4J 的任何外部功能(jar)。有用 Log4J 编写的自定义附加程序,因此将使用插件根据 Log4J2 重新编写附加程序。因此,需要有两个配置文件来支持每个版本,并且需要将两个版本的日志写入同一个文件,格式与自定义附加程序中定义的格式相同。
我发现在一个版本中可以同时将多个附加程序写入同一个文件,但是来自两个 Log4J 版本的附加程序是否可以同时写入同一个文件?如果是,这是推荐的做法,如果不推荐,请提出替代方案。
【问题讨论】:
标签:
java
logging
log4j
log4j2
【解决方案1】:
同时使用 Log4j2 和 Log4j 1.2(不是适配器,而是实际实现)为应用程序进行日志记录是一种不寻常的设置。
将两个日志库配置为写入同一个文件会增加更多风险。它可能有效,也可能无效。这当然不是这些库的设计目的。
我不推荐这样的设置。
最安全的做法是推迟 Log4j2 迁移,直到将 log4j 1.2 自定义附加程序移植到 Log4j2。然后为使用 Log4j 1.2 API 的外部库使用 Log4j2 实现和 log4j-1.2-api-2.x 适配器模块。