You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Florin Marinoiu (JIRA)" <ji...@apache.org> on 2014/08/29 17:01:01 UTC

[jira] [Created] (LOG4J2-807) Disruptor is null when configuration is reloaded (asyncRoot + monitorInterval)

Florin Marinoiu created LOG4J2-807:
--------------------------------------

             Summary: Disruptor is null when configuration is reloaded (asyncRoot + monitorInterval)
                 Key: LOG4J2-807
                 URL: https://issues.apache.org/jira/browse/LOG4J2-807
             Project: Log4j 2
          Issue Type: Bug
    Affects Versions: 2.0.2
            Reporter: Florin Marinoiu


We have a XML configuration with <asyncRoot> and monitorInterval. When the configuration file is reloaded I have a NPE and log4j become unavailable:
{code}
2014-08-29 10:39:59,079 ERROR Could not register mbeans java.lang.NullPointerException
	at org.apache.logging.log4j.core.async.AsyncLoggerConfigHelper.createRingBufferAdmin(AsyncLoggerConfigHelper.java:360)
	at org.apache.logging.log4j.core.async.AsyncLoggerConfig.createRingBufferAdmin(AsyncLoggerConfig.java:148)
{code}

Here is my config:
{code}
<?xml version="1.0" encoding="UTF-8"?>
<Configuration name="asynRootConfig" monitorInterval="5" status="debug">
    <Appenders>
        <RandomAccessFile name="FILE_APPENDER" fileName="application.log" immediateFlush="false" append="true">
            <PatternLayout>
                <Pattern>%d  %-5p [%c{1.}] %m%n</Pattern>
            </PatternLayout>
        </RandomAccessFile>
    </Appenders>
    <Loggers>
        <asyncRoot level="debug">
            <AppenderRef ref="FILE_APPENDER" />
        </asyncRoot>
    </Loggers>
</Configuration>
{code}
And a code snippet to reproduce:
{code}
public class Log4jAsyncRootReloadTest {

    public static void main(String[] args) throws InterruptedException {
        final File config = new File("./log4j2.xml");
        System.setProperty("log4j.configurationFile", "file://" + config.getAbsolutePath().replaceAll("\\\\", "/"));

        Logger logger = LogManager.getLogger(Log4jAsyncRootReloadTest.class);
        logger.info("Log4j configured, will be reconfigured in aprox. 5 sec");

        config.setLastModified(System.currentTimeMillis());

        for (int i = 0; i < 10; i++) {
            Thread.sleep(1000);
            logger.info("Log4j waiting for reconfiguration");
        }
    }
}
{code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

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