2012-12-07 119 views
1

更新: 这不仅适用于AsyncAppender。控制台也适用于此。Log4J:堆栈跟踪打印期间出现AsyncAppender和NullPointerException

我面临的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 

但对于5 20的尝试我看到:

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?有人面对过吗?什么是这个解决方法?

回答

2

看起来像this bug

编辑:基于release notes,1.2.16(2010-04-06发布)应包含the fix for this

+0

是的,绝对。我检查了消息来源。谢谢你发现票。看起来版本27已经修复了这个问题,至少我还没有面对它。 –

+0

太好了。我想你的意思是17,而不是27. – eis

+0

正是!第17个。对不起,我的胖手指。 –