Linux下Xshell打印Tomcat实时日志中文乱码 解决

时间:2024-03-30 18:01:35

一、背景:

在linux上部署了一个tomcat容器,用来运行服务。其中tomcat是7版本,也是官网刚下的。

二、问题:

部署服务完成后,Xshell 启动服务,啪啦啪啦。。。程序的日志打印出来,控制台 出现大量的中文日志乱码。

Linux下Xshell打印Tomcat实时日志中文乱码 解决

 

三、解决:

1、首先看下服务器系统的编码

执行命令:echo $LANG

Linux下Xshell打印Tomcat实时日志中文乱码 解决

是美版 UTF-8格式,所以要去检查 Xshell 终端的编码格式

Linux下Xshell打印Tomcat实时日志中文乱码 解决

设置的就是UTF-8模式啊。

2、尝试修改Xshell终端的编码格式为其他的如: GBK(中文格式)

Linux下Xshell打印Tomcat实时日志中文乱码 解决

这里修改,或者在连接会话里改,

Linux下Xshell打印Tomcat实时日志中文乱码 解决

 

3、再次重启,看tomcat打印日志

Linux下Xshell打印Tomcat实时日志中文乱码 解决

 

噢no~~~~还是乱码,还是换种格式的乱码了。说明不是简单改个终端中文格式就能解决的。

4、再思考下,乱码无非是系统编码问题、终端编码问题、或者两者不一致问题。

对~~~还有,本身程序文件是否就是乱码。

打开程序.class文件,还是我多虑了,是正常的。

5、或者是不是 系统 美版UTF-8原因和终端的UTF-8配不上引起。

正在考虑修改系统的 en_US.UTF-8为 中文的 zh_CN.UTF-8。

随口问了下同事,他说他部署打印中文是正常的,然后我打消了这个念头。说明问题不是出在系统编码上。要是改了还 不确定会不会影响别人。

6、我擦,我漏掉了tomcat这个锅。根据差异定位到了是不是tomcat编码设置引起的。

我先去conf文件夹下的 server.xml 看下服务HTTP请求协议有没有设置编码格式。

Linux下Xshell打印Tomcat实时日志中文乱码 解决

好吧,其实也是utf-8编码。

7、最后一根稻草,查看catalina.sh里面的日志管理器

在bin文件夹下 根据LOGGING_MANAGER搜索找到

if [ -z "$LOGGING_MANAGER" ]

if [ -z "$LOGGING_MANAGER" ]; then

LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager "

fi

改为:

if [ -z "$LOGGING_MANAGER" ]; then

JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"

else

JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER -Dfile.encoding=UTF-8-Dsun.jnu.encoding=UTF-8"

fi

启动后还是 乱码,绝望中~~~~

8、日志管理 改为中文编码格式 GBK

if [ -z "$LOGGING_MANAGER" ]; then

JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dfile.encoding=GBK -Dsun.jnu.encoding=GBK"

else

JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER -Dfile.encoding=GBK-Dsun.jnu.encoding=GBK"

fi

Linux下Xshell打印Tomcat实时日志中文乱码 解决

 

好吧,解决了~~~~~~~