Как работает метод getTail () в XMLFormatter? - PullRequest
2 голосов
/ 08 марта 2012

В java.util.logging.XMLFormatter есть метод getTail (), который записывает последнюю строку физического файла журнала.Он просто пишет

</log> 

на отдельной строке.

Кто-нибудь знает, как / когда вызывается getTail ()?Я никогда не называл это в своем собственном коде, и он всегда писал эту последнюю строку.Теперь вдруг это не так.Я, очевидно, что-то сломал, но черт побери, если я могу думать о том, что я сделал или как это исправить.Мой файл журнала записан, но я не могу его открыть.Сопутствующий файл, который выглядит как блокировка, в этом уверен.(Если имя файла журнала Fuzz.log.xml, другой файл будет называться Fuzz.log.xml.lck, а его размер равен 0. Если я удаляю этот файл, я могу снова отредактировать свой файл журнала, и это нормально, кромечто в нем отсутствует последний тег журнала.) Я просто хочу, чтобы код журнала снова написал для меня этот тег, чтобы я мог открыть журнал, не удаляя файл блокировки и не добавляя плитку вручную.

Какую глупость я мог бы сделать, чтобы getTail () не работал ??

Ответы [ 2 ]

0 голосов
/ 15 декабря 2012

Если вы хотите, вы можете принудительно закрыть:Именно на вас справится эта ситуация.

0 голосов
/ 28 августа 2012

Обычно я ожидаю, что JDK Logging Framework позаботится об обработке потока. Если вы посмотрите, где вызывается getTail (), вы увидите, что он вызывается как часть StreamHandler.flushAndClose (), это в основном вызывается из StreamHandler.close ().

Таким образом, хвост записывается всякий раз, когда поток для функции ведения журнала корректно закрывается, то есть когда приложение завершается корректно. Если приложение аварийно завершает работу или перестает работать, оно может не иметь возможности правильно закрыть файл.

Лучший способ взглянуть на эти вещи, вероятно, использовать Eclipse и убедиться, что JDK Source доступен в Предпочтениях в разделе «Java -> Установленные JRE», тогда вы можете использовать все функции просмотра Eclipse, чтобы увидеть, где находятся вещи связной.

...