Форматирование журнала Java

Я пытаюсь отформатировать некоторые журналы java через файл свойств, но это не работает. У меня в файле свойств есть такие строки:

java.util.logging.ConsoleHandler.formatter=mypackage.logging.LogFormatter
java.util.logging.FileHandler.formatter=mypackage.logging.LogFormatter

где мой пользовательский модуль форматирования LogFormatter находится в mypackage.logging

Выходные данные журнала показывают, что используется SimpleFormatter, а не мой пользовательский модуль форматирования.

Как я могу использовать свой пользовательский форматтер через файл свойств ведения журнала?

изменить: я пробовал все готовые форматеры, такие как com.bea.logging.LogMessageFormatter, SimpleFormatter и XmlFormatter. Они отлично работают. Просто любое новое средство форматирования, которое я создаю, не работает (расширение средства форматирования). Может ли это быть проблемой пути к классам?


person sworded    schedule 02.03.2012    source источник


Ответы (1)


LogManager будет сообщать об ошибках в System.err, который, вероятно, перенаправляется в файл журнала. Поиск этого файла журнала должен вам помочь.

Если вы имеете дело с каким-либо классом, который не отображается из загрузчик системных классов, вы столкнетесь с JDK-6448699 LogManager не правильно загрузить обработчик журнала и JDK-6878454 загрузка класса LogManager несовместима с передовыми практиками Java EE.

Чтобы доказать, что ваш Formatter виден из пути к системному классу, попробуйте следующий код:

Class.forName("mypackage.logging.LogFormatter", true, ClassLoader.getSystemClassLoader());

Вы можете установить системное свойство sun.misc.URLClassPath.debug на true или использовать -verbose:class при запуске, чтобы получить дополнительную отладочную информацию о загрузке классов.

person jmehrens    schedule 27.11.2013