Due to classpath separation in OSGi based projects, loading of custom Appenders fails with e.g.
log4j:ERROR Could not create an Appender. Reported error follows.
java.lang.ClassNotFoundException: ch.sbb.rcs.common.logging.LazyRollingFileAppender cannot be found by org.apache.log4j_1.2.25
at org.eclipse.osgi.internal.loader.BundleLoader.generateException(BundleLoader.java:541)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:536)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:375)
at org.apache.log4j.helpers.Loader.loadClass(Loader.java:159)
at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:240)
at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:174)
at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:189)
at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:492)
at org.apache.log4j.xml.DOMConfigurator.parseCategory(DOMConfigurator.java:415)
at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:932)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:808)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:721)
at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:839)
[...]
I'd suggest to add Eclipse-BuddyPolicy: registered. Then, the issue above is fixed by adding Eclipse-RegisterBuddy: org.apache.log4j to the bundle that provides the custom appender.
Due to classpath separation in OSGi based projects, loading of custom Appenders fails with e.g.
The manifest should define a buddy policy to enable buddy class loading, as described in Context Class Loader Enhancements.
I'd suggest to add
Eclipse-BuddyPolicy: registered
. Then, the issue above is fixed by addingEclipse-RegisterBuddy: org.apache.log4j
to the bundle that provides the custom appender.