logging-log4cxx-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rhosyn <rho...@purplescarab.com>
Subject Re: Caching LoggerPtr using local statics (the singleton pattern)
Date Fri, 17 May 2013 07:17:37 GMT
Hi Balaji,

Static Singletons are problematic during system shutdown in multithreaded
systems.

This thread discusses that issue in a slightly different context with
log4cxx along with a slightly ugly but effective  workaround (allocate the
object using new and store a raw pointer rather than a smart pointer in the
static variable):

http://mail-archives.apache.org/mod_mbox/logging-log4cxx-dev/200901.mbox/%3C4975157F.8070001@purplescarab.com%3E

Hth,

Rhosyn
On May 17, 2013 7:50 AM, "Balaji Babu" <babu.lbk@gmail.com> wrote:

> Assaf Lavie <assaflavie <at> gmail.com> writes:
>
> >
> > I'm afraid this didn't help. Still crashes upon exit.Is caching the raw
> pointer instead of a smart-pointer a better solution?On Tue, May 26, 2009
> at
> 4:20 PM, Curt Arnold <carnold <at> apache.org> wrote:Try using the one
> parameter constructor for LoggerPtr, instead of the default constructor and
> then an assignment:
> >   static LoggerPtr
> singleton(log4cxx::LogManager::getLogger("some.logger"));
> >
> >
> > There is a slight difference in order of events between the two.  Using
> the default constructor, it is
> > 1. Construct singleton
> > 2. Call LogManager::getLogger()
> >     2a. initialize APR, etc
> > 3. Assign logger to singleton
> > With the one parameter it is
> > 1 Call LogManager::getLogger()
> >    1a initialize APR
> > 3. Construct singleton
> > Since destruction events occur in reverse order, using the one-parameter
> constructor results in APR being destroyed last.
> >
> >
> >
> > On May 26, 2009, at 3:37 AM, Assaf Lavie wrote:
> > My program always crashes when I try to cache the LoggerPtr returned from
> getLogger in a local static variable (i.e. singleton) like this:
> > LoggerPtr MyLogger()
> > {
> >   static LoggerPtr singleton =
> log4cxx::LogManager::getLogger("some.logger");
> >   return singleton;
> > }
> > I assume this happens because of some APR related effect. Can someone
> please shed light on this? Does this happen to you?
> >
> >
> >
> >
> >
> >
> >
> >
> >
>
> Hello Assaf Lavie,
> May I know whether you got the solution for this issue. Me too facing the
> same kind of issue in my application. The application is crashing at exit
> by
> pointing the apr_thread_mutex_destroy. It would be great help if I get the
> solution to resolve this issue.
>
> Thanks in advance.
> Balaji
>
>

Mime
View raw message