从Eclipse运行它时,我似乎无法更改Tomcat日志中的语言环境/日期格式。它使用了12小时的时钟,我希望它使用24小时时钟(语言是英语,这已经是我想要的)。这是我到目前为止所尝试的:
LANG
环境变量设置为qazxsw poiLC_ALL
添加到VM选项en_GB
设置为JRE配置中的默认VM参数如果我从shell运行Tomcat,它可以按照预期的方式将-Duser.language=en -Duser.region=GB
添加到-Duser.language=en -Duser.region=GB
中的eclipse.ini
- 例如-Duser.language=en -Duser.region=GB
- 当然,当它从Eclipse中运行时,它不会影响Tomcat。
(错误:我无法重现这一点,并且必须假设我错误地使用Java 6而不是7来运行Tomcat)
使用的软件:Tomcat -Duser.language=en -Duser.region=GB
,Oracle JDK %JAVA_OPTS%
(64位),Windows 8(64位)
更新:感谢bin\catalina.bat
的回答,我了解到Java 7中outlined here的变化。确实,回到Java 6修复了我的问题并给了我24小时时钟 - 但这对我当前的项目来说是不可行的。
我无法用Java 7实现相同的功能。据说,您可以通过将系统属性7.0.54
设置为1.7.0_60
来返回旧的语言环境解析,但这似乎不会影响Tomcat 7的日志记录中的时间显示。过了一会儿,我找到了Michael-O,其中陈述得相当清楚:
(...)我们失去了根据语言环境决定24小时和12小时的能力,但是我们通过在日志记录中为java.util.logging.SimpleFormatter.format属性提供格式字符串来获得覆盖默认格式的能力。的.properties。
因此,看起来,手动定义这个格式字符串是(只有?)的方式,迈克尔-O也建议,所以我接受他的答案。
在深入研究Java's locale-resolution的疯狂之后,我现在已经解决了这个格式字符串,需要将其放在Tomcat的启动配置中的VM选项中:
sun.locale.formatasdefault
输出:
true
或者更短,对于this bug时间戳使用:
java.util.Formatter
's syntax
输出:
-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"
您可能已经被Java 7中的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的自定义格式化程序。