LogHandler flush vs прямой вывод в публикации - PullRequest
2 голосов
/ 18 июля 2011

В настоящее время я пишу собственный java.util.logging.Handler, и я не совсем понимаю концепцию там ... У меня есть мой метод публикации, который содержит логику, чтобы увидеть, следует ли показывать LogRecord, Formatter(или просто SimpleFormatter, если .getFormatter() == null) и, наконец, я помещаю отформатированную строку в кэш.

Теперь я написал метод flush(), и у меня возникли проблемы: flush()Метод никогда не вызывается Java, поэтому при возникновении ошибки он не отображается.Я положил вызов flush() в свой метод publish(), и теперь я могу видеть сообщения журнала ... Так что я не вижу здесь концепции?Когда и кому позвонить flush()?Или я должен сделать это так, как я делаю это сейчас, и вызвать flush() самостоятельно в методе publish ()?

Если вы посмотрите на этот пример: http://www.java2s.com/Code/Java/Language-Basics/HowtowritecustomLoghandler.htm онине делайте ничего с помощью flush() метода

1 Ответ

0 голосов
/ 13 февраля 2012

Возможно, немного поздно, но для блага других ...

Я вижу нечто подобное и предположил, что вы похожи на вас

Я посмотрел на его использование икажется, что это способ сделать сбрасывание стандартным способом, и, кажется, является гарантией того, что вы будете сброшены на закрытии больше, чем что-либо еще.

Некоторые люди "сбрасывают себя", я полагаю, гарантируя, что суперклассы могут принести пользутакже из-за сброса.

Наконец, поскольку нет никакого порогового контроля на этом сбросе и так как я не вижу, чтобы он вызывался в сеансах отладки, или кода для его вызова, я не думаю, что Java дает нам что-либо вэто отношение.

...