Despite what I said below, it seems that the patch for LOG4J2-920 was applied 
over 2 years ago so this should not be happening with 2.11.1.

Ralph

> On Sep 28, 2018, at 10:34 AM, Ralph Goers <ralph.go...@dslextreme.com> wrote:
> 
> It sounds related to LOG4J2-920 but the solution provided there has to be 
> incorrect. There is no way the Log4j API should be declaring any requirements 
> on Log4j Core stuff, especially since the Log4j API doesn’t have a clue what 
> a ContextSelector is. That is only use by the Log4jContextFactory. I suspect 
> the problem is that LoaderUtil resides in log4j-api and since it is actually 
> doing the loading it is causing the problem. That means we are either doing 
> the loading wrong or there is something broken in OSGi.
> 
> Ralph
> 
>> On Sep 28, 2018, at 10:20 AM, Rob Gansevles <rgansev...@gmail.com> wrote:
>> 
>> Yes, that makes sense, but it seems they are still loaded by the log4j-api.
>> I guess this is the reason there are a few optional import-package
>> declarations in the manifest-generation in the pom for log4j-api:
>> 
>>     <plugin>
>>       <groupId>org.apache.felix</groupId>
>>       <artifactId>maven-bundle-plugin</artifactId>
>>       <configuration>
>>         <instructions>
>>           <Export-Package>org.apache.logging.log4j.*</Export-Package>
>>           <Import-Package>
>>             sun.reflect;resolution:=optional,
>>             org.apache.logging.log4j.core.osgi;resolution:=optional,
>>             org.apache.logging.log4j.core.util;resolution:=optional,
>>             org.apache.logging.log4j.core.async;resolution:=optional,
>>             *
>>           </Import-Package>
>> 
>> <Bundle-Activator>org.apache.logging.log4j.util.Activator</Bundle-Activator>
>>           <_fixupmessages>"Classes found in the wrong
>> directory";is:=warning</_fixupmessages>
>>         </instructions>
>>       </configuration>
>>     </plugin>
>> 
>> I get the error below when I use the BasicContextSelector, and when I add
>> org.apache.logging.log4j.core.selector to the imports in the manifest it
>> works.
>> 
>> Maybe it is the same issue as discussed in LOG4J2-920 but then
>> for BundleContextSelector and should a similar patch being applied.
>> What do you think?
>> 
>> ERROR StatusLogger Unable to create custom ContextSelector. Falling back to
>> default.
>> java.lang.ClassNotFoundException:
>> org.apache.logging.log4j.core.selector.BasicContextSelector cannot be found
>> by org.apache.logging.log4j.api_2.11.2.SNAPSHOT
>> at
>> org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:508)
>> at
>> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:419)
>> at
>> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:411)
>> at
>> org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>> at java.lang.Class.forName0(Native Method)
>> at java.lang.Class.forName(Class.java:264)
>> at org.apache.logging.log4j.util.LoaderUtil.loadClass(LoaderUtil.java:168)
>> at
>> org.apache.logging.log4j.util.LoaderUtil.newInstanceOf(LoaderUtil.java:207)
>> at
>> org.apache.logging.log4j.util.LoaderUtil.newCheckedInstanceOf(LoaderUtil.java:228)
>> at
>> org.apache.logging.log4j.util.LoaderUtil.newCheckedInstanceOfProperty(LoaderUtil.java:253)
>> at
>> org.apache.logging.log4j.core.impl.Log4jContextFactory.createContextSelector(Log4jContextFactory.java:98)
>> at
>> org.apache.logging.log4j.core.impl.Log4jContextFactory.<init>(Log4jContextFactory.java:59)
>> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>> at
>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>> at
>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>> at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
>> at java.lang.Class.newInstance(Class.java:442)
>> at org.apache.logging.log4j.LogManager.<clinit>(LogManager.java:94)
>> at
>> org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:121)
>> at
>> org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:49)
>> at
>> org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:46)
>> at
>> org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
>> at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:355)
>> at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:380)
>> at com.servoy.j2db.server.main.Activator.<clinit>(Activator.java:44)
>> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>> at
>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>> at
>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>> at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
>> at java.lang.Class.newInstance(Class.java:442)
>> at
>> org.eclipse.osgi.internal.framework.BundleContextImpl.loadBundleActivator(BundleContextImpl.java:763)
>> at
>> org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:716)
>> at
>> org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1002)
>> at
>> org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:354)
>> at org.eclipse.osgi.container.Module.doStart(Module.java:581)
>> at org.eclipse.osgi.container.Module.start(Module.java:449)
>> at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:468)
>> at
>> org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:114)
>> at
>> org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:505)
>> at
>> org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:328)
>> at
>> org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:392)
>> at
>> org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:36)
>> at
>> org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:466)
>> at
>> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:419)
>> at
>> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:411)
>> at
>> org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>> 
>> 
>> On Fri, Sep 28, 2018 at 6:01 PM Ralph Goers <ralph.go...@dslextreme.com>
>> wrote:
>> 
>>> All ContextSelectors are part of log4j-core, not log4j-api.
>>> 
>>> Ralph
>>> 
>>>> On Sep 28, 2018, at 7:59 AM, Rob Gansevles <rgansev...@gmail.com> wrote:
>>>> 
>>>> Hi,
>>>> 
>>>> I would like to use the BasicContextSelector in our OSGI application so
>>>> have a single global log4j connfiguration as described in
>>>> http://logging.apache.org/log4j/2.x/manual/logsep.html
>>>> 
>>>> However, BasicContextSelector lives in
>>>> package org.apache.logging.log4j.core.selector which does not seem to be
>>>> usable from log4j-api.
>>>> 
>>>> This package is not imported in the manifest of log4j-api like other
>>>> packages (for example org.apache.logging.log4j.core.async).
>>>> 
>>>> Is this missing, or am I missing something?
>>>> 
>>>> I am using log4j 2.11.1
>>>> 
>>>> Regards,
>>>> 
>>>> Rob
>>> 
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>>> 
>>> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
> For additional commands, e-mail: log4j-user-h...@logging.apache.org
> 
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-user-h...@logging.apache.org

Reply via email to