我在从Eclipse运行Tomcat时无法更改Tomcat日志中的区域设置/日期格式。它使用12小时制,而我想要使用24小时制(语言为英语,这已经是我想要的)。到目前为止,我尝试了以下方法:
- 在Tomcat的启动配置中设置
LANG
和LC_ALL
环境变量为en_GB
- 在Tomcat的启动配置中添加
-Duser.language=en -Duser.region=GB
到VM选项中 - 在Eclipse的
eclipse.ini
中添加-Duser.language=en -Duser.region=GB
- 在JRE配置中将
-Duser.language=en -Duser.region=GB
设置为默认VM参数
更新:感谢Michael-O的回答,我意识到自Java 7以来Java的语言环境解析已经发生了改变。事实上,返回到Java 6可以解决我的问题并给了我24小时制的时钟,但这对于我的当前项目是不可行的。
我没有能够在Java 7中实现相同的效果。据说,通过将系统属性sun.locale.formatasdefault
设置为true
可以返回到旧的语言环境解析,但这似乎根本不影响Tomcat 7日志中的时间显示。过了一会儿,我在这个错误中找到了一个相当明确的陈述:
因此,似乎手动定义这个格式字符串是唯一的方法,Michael-O也建议这样做,所以我接受了他的答案。
在深入研究java.util.Formatter
语法的疯狂后,我现在已经使用了这个格式字符串,并需要将其放入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
setenv.sh
、catalina.sh
中,还是直接在catalina.sh
的Java命令中,我都无法正确转义属性值中的空格。这个JUL让我发疯了,我已经浪费了两个小时来完成这个糟糕的任务,但没有任何结果。我将评估:https://github.com/grgrzybek/tomcat-slf4j-logback - Michael-O