重启后,日志就变乱码了
最近产线出现了一个诡异的问题。发布过后,这个系统竟然打印出来的日志竟然就乱码了!而且有个奇怪的现象是,如果通过发布平台发布,不会乱码,手动重启就有概率乱码。
着手排查
经过一通操作+重启,发现还是乱码,有点尴尬。这时候怎么办呢,那当是找规律啦。为什么只有这个系统问题,其它系统没问题呢?
于是笔者看了下其它系统,搜索其中关于字符集的配置,看看是否有不一样的地方。登陆另一个服务,看一下
ps aux | grep java
发现正常应用的JVM参数中有下面这几项:
-Ddefault.client.encoding=UTF-8 -Ddefault.override.encoding=UTF-8
-Dfile.encoding=UTF-8 -Duser.language=zh -Duser.region=CN
这个貌似感觉有点关系,把这个参数加到出问题的JVM系统上试试看
OKay了
加上这个参数后,日志立马就正常了。再反复多次重启之后也是正常的。笔者推测jvm的字符集和当时环境变量有关系,更进一步,和当时使用的ssh client端的字符集有关系。client端字符集的规则相当复杂,所以我们还是老老实实在JVM中强行指定字符集,这样就不会被这种问题所干扰了。