【发布时间】:2012-07-03 18:00:36
【问题描述】:
我正在使用 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。似乎没有任何区别。
【问题讨论】:
-
面临同样的问题。这里有一个猜测:
java.util.logging.SimpleFormatter.format属性特性是在 Java 7 中引入的。我知道 Tomcat 基本上使用了java.util.logging的略微修改版本。不知道是不是这个原因。 -
是的 nolan6000,我遇到了同样的问题,这与我使用的 JDK 版本有关。谢谢。