将Log4j1.x迁移到log4j-1.2-api。需要使用AbstractAppender而不是AppenderSkeleton

时间:2020-05-17 23:31:50

标签: java spring logging log4j

问题:

  • 无法使用log4j.properties附加用于扩展AbstractAppender的自定义附加程序。

背景:

  • 我最近使用桥梁Log4j-1.2-api将项目更新为Log4j2。
  • 更新了所有导入和记录器方法。到目前为止没有问题。
  • 更新了自定义附加类,将AppenderSkeleton扩展为现在可以使用AbstractAppender。生成以下错误:
19:11:25,791 ERROR [MSC service thread 1-1:stderr]:71 - log4j:ERROR The class "org.apache.log4j.Appender" was loaded by 
19:11:25,792 ERROR [MSC service thread 1-1:stderr]:71 - log4j:ERROR [ModuleClassLoader for Module "org.jboss.log4j.logmanager" version 1.1.6.Final-redhat-00001 from local module loader @79b4d0f (finder: local module finder @6b2fad11 (roots: C:\Programs\jboss-eap-7.2\modules,C:\Programs\jboss-eap-7.2\modules\system\layers\base))] whereas object of type 
19:11:25,792 ERROR [MSC service thread 1-1:stderr]:71 - log4j:ERROR "com.mydomain.log4j.CustomAppender" was loaded by [ModuleClassLoader for Module "deployment.MyApp-1.0-SNAPSHOT.war" from Service Module Loader].
19:11:25,792 ERROR [MSC service thread 1-1:stderr]:71 - log4j:ERROR Could not instantiate appender named "errorLogAppender".

log4j.properties

appender.errorLogAppender=com.mydomain.log4j.CustomAppender

问题:

如何在保持相同的log4j.properties文件并修复允许我使用扩展了AbstractAppender的新CustomAppender的部件的同时使用Log4j-1.2-api?

1 个答案:

答案 0 :(得分:0)

您不能混搭。如果要使用Log4j 2 Appender,则必须使用Log4j 2配置文件。如果要尝试使用log4j 1.x Appender并查看它是否与log4j 1.x配置文件一起使用,请遵循Log4j 1.x Compatibility上的说明。就是说,那么您确实应该使用Log4j 2.x配置。

但是要注意的一项是,您收到的错误消息来自Log4j 1.x,而不是Log4j2。这意味着您尚未从系统中完全删除Log4j 1。第二行表明它已集成到JBoss中。

最后,您甚至可能不需要自定义Appender。我发现,在升级时,许多用户并没有真正看待问题,而是真正在尝试解决问题,而只是在不考虑需要使用原因的情况下尝试迁移源。 Log4j 2很可能已经包含一个可以解决所有问题的组件。

相关问题