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 Ted Graham <tg...@ConcordEnergy.com> on 2008/01/25 15:55:36 UTC
Concurrency with separate logger and appender elements?
We are using log4j 1.2.14 as part of a financial trading system, where
latency is important.
If I have two threads logging to separate files via separate appenders, can
they execute concurrently. If not, what is the point of contention, and how
serious is it?
To explain in more detail, my config file has two <logger>s and two
<appender>s (both DailyRollingFileAppenders). The code references one of
the loggers by name and logs to it from a dedicated thread. There is
another thread that log to a variety of other loggers, which are handled by
a root level appender. Will logging to one appender block another thread
from logging to a separate appender?
Thanks,
Ted
Re: Concurrency with separate logger and appender elements?
Posted by Curt Arnold <ca...@apache.org>.
On Jan 25, 2008, at 8:55 AM, Ted Graham wrote:
> We are using log4j 1.2.14 as part of a financial trading system, where
> latency is important.
>
>
>
> If I have two threads logging to separate files via separate
> appenders, can
> they execute concurrently. If not, what is the point of contention,
> and how
> serious is it?
>
>
>
> To explain in more detail, my config file has two <logger>s and two
> <appender>s (both DailyRollingFileAppenders). The code references
> one of
> the loggers by name and logs to it from a dedicated thread. There is
> another thread that log to a variety of other loggers, which are
> handled by
> a root level appender. Will logging to one appender block another
> thread
> from logging to a separate appender?
>
>
>
> Thanks,
>
> Ted
>
Unfortunately, log4j 1.2 uses coarse grain synchronization since many
internal classes are not thread-safe. log4j 1.2 can evaluate many
logging requests simultaneously to see if they satisfy the threshold,
but only one logging request at a time can be in the code that
dispatches to the appenders. One of the big design criteria for the
hypothetical log4j 2.0 is to replace that coarse grain synchronization
with a much more modern design.
Wrapping the DRFA's in AsyncAppender's should substantially reduce the
latency issue as long as the AsyncAppender does not block (if you set
blocking to false, if the buffer overflows a summary of the missed
logging statements is generated). In that case, the other threads are
blocked only for the time necessary to add the event to the
AsyncAppender's queue, not the time necessary to perform the IO.
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org