Log4J:堆栈跟踪打印期间的AsyncAppender和NullPointerException

时间:2012-12-07 06:28:51

标签: log4j nullpointerexception appender

更新: 这不仅适用于AsyncAppender。也适用于控制台。

我面对AsyncAppender的奇怪行为,这种行为很少发生但有足够的伤害。

以下是代码段:

public void testNPE() {
    try {
        try {
            throw new NullPointerException();
        } catch (NullPointerException e) {
            throw new RuntimeException(e);
        }
    } catch (RuntimeException e) {
        logger.error("Catcha!" + e.getLocalizedMessage(), e);
    }
}

可能的结果应该是:

07.12.12 10:21:34,904 ERROR [main] >> [com.ubs.eqdel.markitfeed.core.RetrieverTest:74]          Catcha! java.lang.NullPointerException
java.lang.RuntimeException: java.lang.NullPointerException
    at com.ubs.eqdel.markitfeed.core.RetrieverTest.testNPE(RetrieverTest.java:71)
...
Caused by: java.lang.NullPointerException
    at com.ubs.eqdel.markitfeed.core.RetrieverTest.testNPE(RetrieverTest.java:69)
    ... 25 more

但是我看到20次尝试中的5次:

Exception in thread "Dispatcher-Thread-0" java.lang.NullPointerException
    at java.io.Writer.write(Writer.java:140)
    at org.apache.log4j.helpers.CountingQuietWriter.write(CountingQuietWriter.java:45)
    at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:309)
    at org.apache.log4j.RollingFileAppender.subAppend(RollingFileAppender.java:263)
    at org.apache.log4j.WriterAppender.append(WriterAppender.java:160)
    at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
    at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
    at org.apache.log4j.AsyncAppender$Dispatcher.run(AsyncAppender.java:583)
    at java.lang.T07.12.12 10:23:54,972 ERROR [main] >> [com.ubs.eqdel.markitfeed.core.RetrieverTest:74]  Catcha! java.lang.NullPointerException
java.lang.RuntimeException: java.lang.NullPointerException
at com.ubs.eqdel.markitfeed.core.RetrieverTest.testNPE(RetrieverTest.java:71)
...
Caused by: java.lang.NullPointerException
    at com.ubs.eqdel.markitfeed.core.RetrieverTest.testNPE(RetrieverTest.java:69)
    ... 25 more

AsyncAppender出了什么问题?有人面对同样的事吗?这是什么解决方法?

1 个答案:

答案 0 :(得分:2)

看起来像this bug

修改:根据release notes,1.2.16(2010-04-06发布)应包含the fix for this

相关问题