You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by huang <hu...@163.com> on 2014/04/20 09:18:27 UTC

not lose log events while reload its configuration problem

Hi all,
         I am learning the source code of log4j 2.I want to know  how log4j 2 can reload its configuration "without losing log events while reconfiguration is taking place.".How can  it  make sure it don't lose log events while reload its configuration. 
Thanks.
      With regards.


Re: not lose log events while reload its configuration problem

Posted by Matt Sicker <bo...@gmail.com>.
At first, I thought it looked like a bridge design pattern. Upon further
comparison, it doesn't really fit that pattern (nor does it fit any other
common design patterns that I can see). It's rather neat, actually.

Essentially, a Configuration is tied to a LoggerContext. The LoggerContext
produces Loggers, and those Loggers get paired to a Configuration through
the LoggerConfig object. When you call a method on the Logger object, it
will pass along the log event information to its current LoggerConfig. That
LoggerConfig is where appenders, filters, etc., are mostly all located, so
the configured logger is really used at that point.

Thus, when you reconfigure, all the Loggers will still reference the old
configuration still, but each one gets updated and switched over to the new
config atomically. No log messages get lost during the configuration
parsing and construction of the new LoggerConfig objects (and any other
plugin objects relevant to the new config).

I hope that wasn't too in-depth!


On 20 April 2014 06:19, Ralph Goers <rg...@apache.org> wrote:

> Unlike Log4j 1 and Logback, Log4j 2 separates the configuration from the
> actual Logger objects.  When a reconfiguration occurs a new Configuration
> is created.  Once it is completed each Logger is modified to reference a
> LoggerConfig in the new Configuration.  So for a small amount of time some
> Loggers may point to the old Configuration while some point to the new
> Configuration, but it will never be the case that a Logger is us configured.
>
> Ralph
>
> > On Apr 20, 2014, at 12:18 AM, huang <hu...@163.com> wrote:
> >
> > Hi all,
> >         I am learning the source code of log4j 2.I want to know  how
> log4j 2 can reload its configuration "without losing log events while
> reconfiguration is taking place.".How can  it  make sure it don't lose log
> events while reload its configuration.
> > Thanks.
> >      With regards.
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
> For additional commands, e-mail: log4j-user-help@logging.apache.org
>
>


-- 
Matt Sicker <bo...@gmail.com>

Re: not lose log events while reload its configuration problem

Posted by Ralph Goers <rg...@apache.org>.
Unlike Log4j 1 and Logback, Log4j 2 separates the configuration from the actual Logger objects.  When a reconfiguration occurs a new Configuration is created.  Once it is completed each Logger is modified to reference a LoggerConfig in the new Configuration.  So for a small amount of time some Loggers may point to the old Configuration while some point to the new Configuration, but it will never be the case that a Logger is us configured.

Ralph

> On Apr 20, 2014, at 12:18 AM, huang <hu...@163.com> wrote:
> 
> Hi all,
>         I am learning the source code of log4j 2.I want to know  how log4j 2 can reload its configuration "without losing log events while reconfiguration is taking place.".How can  it  make sure it don't lose log events while reload its configuration. 
> Thanks.
>      With regards.
> 

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