Я использую Tomcat 7.0.28, работающий под OpenJDK 1.7 на Ubuntu, и пытаюсь изменить строку форматирования, используемую java.util.logging.SimpleFormatter. Согласно Javadocs для этого класса, я могу указать свойство java.util.logging.SimpleFormatter.format, чтобы изменить формат. И действительно, когда я запускаю свой webapp в Eclipse и изменяю это свойство в файле logging.properties, он работает.
Однако, когда я развертываю приложение в Tomcat, это свойство, похоже, не имеет никакого эффекта. Я уверен, что файл свойств читается правильно, так как другие изменения, которые я им делаю, действительно вступают в силу (я читаю свойства из файла с помощью
LogManager.getLogManager().readConfiguration(new FileInputStream(file))
где файл настроен через параметр в моем файле web.xml. Я попытался поместить файл в WEB-INF/classes/logging.properties, без изменений в поведении.
Javadocs for SimpleFormatter указывает, что если оба файла свойств и системное свойство задают строку форматирования, свойство системы имеет приоритет. Я проверил, что системное свойство не установлено
context.log ("Formatting system property is " + System.getProperty("java.util.logging.SimpleFormatter.format"));
в методе ServletContextListener.contextInitialized.
Здесь мой файл свойств ведения журнала полностью
handlers=java.util.logging.ConsoleHandler
# Default logging level for root logger
.level=FINE
# Set the level for the ConsoleHandler
java.util.logging.ConsoleHandler.level=FINE
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=[%1$tF %1$tr] %3$s %4$s: %5$s %n
Я пробовал все, о чем я мог думать, включая изменение logging.properties в каталоге TOMCAT/conf и JRE_HOME/lib. Кажется, ничего не имеет значения.