1

更新:これはAsyncAppenderだけに当てはまりません。コンソール1にも発生します。

私は、めったに発生しないが十分な害を伴う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の何が問題になっていますか?誰かが同じように直面しましたか?そして、これの回避策は何ですか?

4

1 に答える 1

2

このバグのように見えます。

編集:リリース ノートに基づくと、1.2.16 (2010 年 4 月 6 日にリリース) にはこの問題の修正が含まれているはずです。

于 2012-12-09T15:32:57.730 に答える