2012-12-07 58 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個。對不起,我的胖手指。 –