从Eclipse运行时,我似乎无法更改Tomcat日志中的语言环境/日期格式。它使用12小时制,我希望它使用24小时制(语言是英语,已经是我想要的)。这是我到目前为止所尝试的内容:
LANG
和LC_ALL
环境变量设置为en_GB
-Duser.language=en -Duser.region=GB
-Duser.language=en -Duser.region=GB
添加到Eclipse' eclipse.ini
-Duser.language=en -Duser.region=GB
设置为JRE配置中的默认VM参数 如果我从shell运行Tomcat,它会在 (错误:我无法重现这一点,并且必须假设我错误地使用Java 6而不是7运行Tomcat ) -Duser.language=en -Duser.region=GB
中将%JAVA_OPTS%
添加到bin\catalina.bat
- 按照预期正常工作 - 例如outlined here - 但这并不是当然,当它从Eclipse中运行时会影响Tomcat。
使用过的软件:Tomcat 7.0.54
,Oracle JDK 1.7.0_60
(64位),Windows 8(64位)
更新:感谢Michael-O的回答,我知道自Java 7以来Java's locale-resolution发生了变化。的确,回到Java 6解决了我的问题并给了我24小时制 - 但这对我目前的项目来说是不可行的。
我无法在Java 7中实现相同的功能。据说,您可以通过将系统属性sun.locale.formatasdefault
设置为true
来返回旧的语言环境解析,但是这似乎不会影响Tomcat 7的所有日志记录中的时间显示。过了一会儿,我找到了this bug,其中陈述得相当清楚:
(...)我们失去了根据语言环境决定24小时和12小时的能力,但是我们通过为java.util.logging.SimpleFormatter.format提供格式字符串来获得覆盖默认格式的能力。 logging.properties中的属性。
因此,似乎手动定义这个格式字符串是(仅?)的方式,Michael-O也建议,所以我接受了他的回答。
在深入研究java.util.Formatter
's syntax的疯狂之后,我现在已经解决了这个格式字符串,需要将其放在Tomcat的启动配置中的VM选项中:
-Djava.util.logging.SimpleFormatter.format="%1$ty%1$tm%1$td_%1$tH%1$tM%1$tS_%1$tL %4$4.4s %3$s %5$s %n"
输出:
151003_195915_359 INFO org.apache.coyote.http11.Http11Protocol Starting ProtocolHandler ["http-bio-8080"]
151003_195915_375 INFO org.apache.coyote.ajp.AjpProtocol Starting ProtocolHandler ["ajp-bio-8009"]
151003_195915_375 INFO org.apache.catalina.startup.Catalina Server startup in 1280 ms
或者更短,对于ISO 8601时间戳使用:
-Djava.util.logging.SimpleFormatter.format="%tFT%<tT.%<tL %4$4.4s %3$s %5$s %n"
输出:
2015-10-03T19:37:03.703 INFO org.apache.coyote.http11.Http11Protocol Starting ProtocolHandler ["http-bio-8080"]
2015-10-03T19:37:03.703 INFO org.apache.coyote.ajp.AjpProtocol Starting ProtocolHandler ["ajp-bio-8009"]
2015-10-03T19:37:03.703 INFO org.apache.catalina.startup.Catalina Server startup in 1189 ms
答案 0 :(得分:2)
您可能已经受到Java 7中this更改的影响。
我看到的唯一解决方案是ISO 8601的自定义格式化程序。
答案 1 :(得分:0)
希望您需要更改catalina.out
中的日期格式。请如下修改您的logging.properties
。
对于org.apache.juli.OneLineFormatter
:
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
org.apache.juli.OneLineFormatter.timeFormat = yyyy-MM-dd HH:mm:ss
对于java.util.logging.SimpleFormatter
:
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format = "%4$s: %5$s [%1$tc]%n"