Log4J:stacktrace打印期间的AsyncAppender和NullPointerException

Log4J:stacktrace打印期间的AsyncAppender和NullPointerException,log4j,nullpointerexception,appender,Log4j,Nullpointerexception,Appender,更新: 这不仅适用于AsyncAppender。控制台一也会发生这种情况 我面临着AsyncAppender的极端行为,这种行为很少发生,但危害很大 下面是代码片段: public void testNPE() { try { try { throw new NullPointerException(); } catch (NullPointerException e) { throw new Runtime

更新: 这不仅适用于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.2.16(于2010-04-06发布)应该包含。

是的,当然。我查过消息来源。谢谢你发现了这张票。看起来版本27已经解决了这个问题,至少我还没有面对它。太好了。我猜你指的是17岁,而不是27岁。没错!第17个。对不起,我的手指太胖了。