logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Remko Popma (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LOG4J2-1350) Circuit Breaker for log system to avoid DOS by recursion
Date Mon, 11 Jul 2016 05:40:10 GMT

    [ https://issues.apache.org/jira/browse/LOG4J2-1350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15370202#comment-15370202

Remko Popma commented on LOG4J2-1350:

[~SteffenO] LOG4J2-1080 was fixed in Log4j 2.6.2. Have you had a chance to try it?

Set system property {{log4j2.AsyncQueueFullPolicy}} to Discard to drop events whose level
is equal or less than the threshold level (INFO by default) when the queue is full. Related
system properties are documented on the Configuration manual page: https://logging.apache.org/log4j/2.x/manual/configuration.html#log4j2.AsyncQueueFullPolicy

You can also provide a custom policy. See https://github.com/apache/logging-log4j2/blob/master/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncQueueFullPolicyFactory.java

> Circuit Breaker for log system to avoid DOS by recursion
> --------------------------------------------------------
>                 Key: LOG4J2-1350
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1350
>             Project: Log4j 2
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 2.5
>            Reporter: Steffen Offermann
> We have encountered the following situation: A method in an application thread was recursively
calling itself again and again, until the inevitable {{StackOverflowException}} occurred.
Other application threads worked fine, but since we use asynchronous logging, the Log4j ring
buffer ran full because of the thread that was running amok. As a consequence none of the
other threads could issue any log messages any more. 
> In production systems we MUST be able to see log messages, otherwise we have hardly a
means to tell when something goes wrong and to discover problems like this. 
> So my suggestion would be to add a circuit breaker pattern to the Log4j core system (unless
there already is one that I'm not aware of), that would track the frequency of log events
per thread and open once a dangerous threshold has been reached or exceeded. That way other
threads would still be able to send log events once the ring buffer is free again.

This message was sent by Atlassian JIRA

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

View raw message