Я пытаюсь настроить регистратор для своего приложения. Я хочу сделать это через файл logger.properties, указанный для этого проекта. Я использую следующий код для его настройки:
InputStream loggerProps = getClass().getResourceAsStream("/logger.properties");
LogManager.getLogManager().readConfiguration(loggerProps);
Этот файл содержит следующий текст:
handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level = ALL
java.util.logging.SimpleFormatter.format=[%1$tF %1$tT] [%4$-7s] %5$s %n
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
#part about FileHandler omitted
И проблема в том, что данный формат вообще не применяется к зарегистрированным сообщениям. Однако, это не только в Java 8 (возможно, более ранние версии также не проверяли это). Когда я пробую вышеупомянутое в Java 9 или 10, это работает просто отлично.
Из того, что я могу сказать, файл загружен правильно. Избавление от ConsoleHandler в первой строке приводит к тому, что журналы не отображаются в консоли. Изменение уровня обработчика работает так же, как и ожидалось.
Если я вызову следующий метод после установки свойств:
LogManager.getLogManager().getProperty("java.util.logging.SimpleFormatter.format")
возвращает правильную строку формата.
Я пытался поместить строку формата в двойные и одинарные кавычки, но ни одна из них не работает.
Что я делаю не так? В чем проблема? Разве формат не поддерживается в версии Java ниже 9?