如何使用log4j extras 1.2.17

f5emj3cl  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(443)

我想从使用基于文件大小的RollingFileAppender更改为使用log4j 1.2.17的DailyRollingFileAppender,但是文档中说该appender存在已知的同步问题,应该使用log4j extras包中的appender(我知道log4j 2可用,并且没有任何已知的相关问题)。
当我用downloaded from the Apache site的log4j-extras-1.2.17替换常规的log4j-1.2.17 jar时,我在org.apache.log4j.or.RendererMap上得到一个ClassNotFoundException。我可以看到它确实存在于常规包中,但不存在于extras中。我知道常规包被标记为extras包的依赖项,但是Apache站点(和Maven Central)上的extras下载似乎是一个捆绑包。如果我也要包含常规的log4j包,那么如何阻止类加载器使用常规包而不是extras中的损坏的appender类呢?
如何使用此库?
我已经升级到了2.x API,因为我可以使用兼容性桥。我仍然很想知道为什么它不起作用。是它根本上坏了还是我遗漏了什么?

nkoocmlb

nkoocmlb1#

正如您已经注意到的,apache-log4j-extras是由maven-bundle-plugin创建的OSGI包。
由于一个Java包只能由一个OSGI包提供,因此apache-log4j-extras包含了两个项目共享包中所有log4j类的副本。apache-log4j-extras不包含特定于log4j的软件包,如org.apache.log4j.or
即使这两个工件共享类,这也不构成问题:共享类是相同的。只有当您使用不匹配的log4japache-log4j-extras版本时,才会出现问题。

备注:您可能指的是log4j中的“损坏”类org.apache.log4j.RollingFileAppender,它的完全限定类名与apache-log4j-extras提供的类名不同(org.apache.log4j.rolling.RollingFileAppender,请注意名称中的rolling部分)。

相关问题