Right. We have few cases of using OSGi in plug-in jars like use cases. In that 
case, when using 
-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
new AsyncLogger thread, Disruptor, etc is started per class loader where 
logging was used. 

In one application we specify 
-DLog4jContextSelector=org.apache.logging.log4j.core.selector.BasicContextSelector
and use AsyncRoot and AsyncLogger in log4j2 configuration. In that case only 
one AsyncLogger is created.

I guess there is no way to have one AsyncLogger for the application when using 
pure async logging mode under OSGi like/different classloader setup.

On 2018/07/25 19:02:53, Matt Sicker <boa...@gmail.com> wrote: 
> The typical class loader selector or bundle one are made with the
> assumption that you're hosting multiple applications in a single JVM. The
> basic one works fine when you have a single application per JVM.
> 
> On Wed, 25 Jul 2018 at 12:23, Leon Finker <leon...@gmail.com> wrote:
> 
> > For our use case BasicContextSelector works as expected. We really don't
> > need one async logger, disruptor, thread, etc per class loader.
> >
> > On Wed, Jul 25, 2018, 1:12 PM Ralph Goers <ralph.go...@dslextreme.com>
> > wrote:
> >
> > > The default context selector is ClassLoaderContextSelector which creates
> > a
> > > LoggerContext for each ClassLoader. This means that if you were to start
> > > and stop a bundle the Logging environment for that bundle should clean
> > up.
> > > When you use the BasicContextSelector there is only a single
> > LoggerContext
> > > for the whole application. As to which is correct for an OSGi
> > environment I
> > > couldn’t say.  If we need a context selector specifically for OSGi
> > > environments that can certainly be implemented, but we would have to know
> > > what the expected behavior is. Of course, you can always implement it and
> > > submit it as a patch to a Jira issue.
> > >
> > > Ralph
> > >
> > > > On Jul 25, 2018, at 9:44 AM, Leon Finker <leon...@gmail.com> wrote:
> > > >
> > > > Hi,
> > > >
> > > > Use case: provide log4j2 logging in Felix OSGi application. Nothing
> > OSGi
> > > specific as far as logging concerned. Simply need to log all logging
> > events
> > > to configured log file for the application. Using async logging.
> > > >
> > > > If we run log4j2 (any current version) with default context selector,
> > > then we noticed that each OSGi bundle creates a separate
> > AsyncLoggerConfig*
> > > thread with its own Disruptor, RingBuffer, etc. We have about 30+
> > bundles.
> > > Only by setting Log4jContextSelector to
> > > org.apache.logging.log4j.core.selector.BasicContextSelector, this is
> > > prevented and one AsyncLoggerConfig/Disruptor/RingBuffer is created.
> > > >
> > > > Is this expected?
> > > >
> > > > ---------------------------------------------------------------------
> > > > 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
> > >
> > >
> >
> 
> 
> -- 
> Matt Sicker <boa...@gmail.com>
> 

---------------------------------------------------------------------
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