如何修复CentOS服务器上的JVM语言环境问题?



我们在云服务器上运行多台服务器和一个数据库。JVM似乎关闭了2个小时,因为它在UTC时间运行,而它应该在CEST时间运行。

当我ssh到服务器并运行date时,我得到以下内容:

Fri Sep 16 09:21:16 CEST 2016

我们的数据库设置为系统时间,它与上面的时间相同(正确)。这正是我所期望的。
当我查看使用Log4j2作为日志记录器的java服务器的日志文件时,日志消息上的Timestamps是正常的(在log4j2.xml文件中配置了时区),但是从服务器本身打印的日期是关闭的。如果我从log4j2配置文件中删除时区,那么它也默认为UTC。

看了一会儿上面的内容后,我运行了'locale'命令,得到如下结果:

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

这显然是错误的。
在活动服务器上更改此文件之前,我修改了测试服务器上的locale.conf文件并重新启动它,以查看更改是否会产生影响。他们没有。在测试服务器上运行的java服务器仍然具有与我进行更改之前相同的时间。

我在这里错过了什么?这些服务器在服务器上作为服务运行,并且有自己的用户和组(我不知道这是否相关)。

任何帮助都将非常感激。

服务器上的timezone不受地区设置的控制,jvm从系统时钟中获取时间,这是另一回事。这个命令为我解决了这个问题:

sudo timedatectl set-timezone Europe/Stockholm

最新更新