我正在使用 Tomcat 7.0.28,在 Ubuntu 上的 OpenJDK 1.7 下运行,并试图修改 java.util.logging.SimpleFormatter 使用的格式化字符串。根据该类的 Javadocs,我可以指定属性 java.util.logging.SimpleFormatter.format 来更改格式。事实上,当我在 Eclipse 中运行我的 webapp 并在我的 logging.properties 文件中更改此属性时,它可以工作。
但是,当我将应用程序部署到 Tomcat 时,此属性似乎没有任何作用。我确信我的属性文件被正确读取,因为我对其所做的其他更改确实生效(我正在使用从文件中读取属性
LogManager.getLogManager().readConfiguration(new FileInputStream(file))
其中文件是通过我的 web.xml 文件中的参数配置的。我尝试将文件放在 WEB-INF/classes/logging.properties 中,但行为没有改变。
SimpleFormatter 的 Javadocs 指定如果属性文件和系统属性都指定格式字符串,则系统属性优先。我已验证未设置系统属性
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
我已经尝试了所有我能想到的方法,包括修改 TOMCAT/conf 和 JRE_HOME/lib 目录中的 logging.properties。似乎没有任何区别。