Ошибка log4j - не удалось очистить писатель в сервлете (java.io.IOException: неверный дескриптор файла) - PullRequest
1 голос
/ 07 марта 2012

Log4J обычно дает нам сбой после нескольких часов использования в нашей среде сервлетов (tomcat 7.0.26 работает на CentOS 5.5 с Java 1.6u31). После возникновения этой ошибки дальнейшее ведение журнала не происходит до тех пор, пока кот не будет перезапущен. Еще одна действительно странная вещь - иногда запросы на регистрацию сбрасываются в jsps, которые обслуживаются. Там будет около 10 строк или около того журнала, а затем HTML-страницы под ним. Мы используем последнюю банку log4j.

Эти журналы от catalina.out. Журналы нашего приложения просто останавливаются.

log4j:ERROR Failed to flush writer,
java.io.IOException: Bad file descriptor
        at java.io.FileOutputStream.writeBytes(Native Method)
        at java.io.FileOutputStream.write(Unknown Source)
        at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
        at sun.nio.cs.StreamEncoder.implFlushBuffer(Unknown Source)
        at sun.nio.cs.StreamEncoder.implFlush(Unknown Source)
        at sun.nio.cs.StreamEncoder.flush(Unknown Source)
        at java.io.OutputStreamWriter.flush(Unknown Source)
        at org.apache.log4j.helpers.QuietWriter.flush(QuietWriter.java:59)
        at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:324)
        at org.apache.log4j.RollingFileAppender.subAppend(RollingFileAppender.java:276)
        at org.apache.log4j.WriterAppender.append(WriterAppender.java:162)
        at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
        at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
        at org.apache.log4j.Category.callAppenders(Category.java:206)
        at org.apache.log4j.Category.forcedLog(Category.java:391)
        at org.apache.log4j.Category.info(Category.java:666)
        ...

log4j:ERROR Could not close org.apache.log4j.helpers.CountingQuietWriter@1e7abbd
java.io.IOException: Bad file descriptor
        at java.io.FileOutputStream.close0(Native Method)
        at java.io.FileOutputStream.close(Unknown Source)
        at sun.nio.cs.StreamEncoder.implClose(Unknown Source)
        at sun.nio.cs.StreamEncoder.close(Unknown Source)
        at java.io.OutputStreamWriter.close(Unknown Source)
        at java.io.FilterWriter.close(Unknown Source)

1 Ответ

0 голосов
/ 30 марта 2012

Я не знаю, что было основной причиной наших проблем.Я переключился с log4j на logback , и с тех пор у меня не было никаких проблем.

У них даже есть хороший конвертер для преобразования файлов log4j.properties в их эквивалент logback, такпереключиться было довольно легко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...