我已成功将我们的应用程序从log4j 1.x迁移到log4j 2.x. 但是有一个外部组件无法迁移。对log4j 1.x的意义调用应保持原样。
我的应用程序有log4j2.xml,外部组件有旧的log4j.properties。我在log4j2.xml中获取了appender的日志,但没有为log4j.properties中定义的日志。我看了帖子 - Mixing log4j 1.x and log4j 2
并添加了所需的罐子。之前使用log4j 1.x我们曾经有2个log4j.properties - 一个用于applciation,另一个用于使用PropertyConfigurator的外部组件。现在使用log4j2.xml我不知道如何实现这一点。
Configuring log4j2 and log4j using a single log4j2 xml file 这篇文章说我们不能在类路径中有log4j.properties。这是否意味着我需要将log4j.properties中定义的所有appender传输到log4j2.xml?我是否可以为外部组件设置单独的log4j2.xml。
答案 0 :(得分:1)
您不能有两个log4j2.xml配置(好吧,单独的Web应用程序可以有单独的配置,但通常每个进程都有一个配置)。
选项1:最简单的方法是使用网桥log4j-1.2-api-2.x.jar并将log4j.properties配置合并到log4j2.xml 。然后所有日志记录都由lo4j 2完成,它应该都可以工作。
如果你想以艰难的方式做事,你可能会取得成功,但这可能需要一些小事。
选项2:如果通过"将我们的应用程序从log4j 1.x迁移到log4j 2.x"你的意思是你的应用程序现在使用log4j 2 API,那么你应该能够同时使用log4j 1.x到log4j 2。 (外部组件的log4j 1.x。)
在这种情况下,不使用网桥log4j-1.2-api-2.x.jar 。如果您使用网桥,它会将对log4j 1.x API的调用路由到log4j 2.通常这就是您想要的,但在这种情况下,听起来您的外部组件想要使用log4j 1.x内部。 (这是真的吗?如果没有,请考虑选项1.)
如果您的应用程序现在使用log4j 2 API(外部组件除外),则将这些jar和配置文件放在类路径中:
但同样,简单地合并配置可能更容易维护。