Linux下Xshell打印Tomcat實時日誌中文亂碼 解決

一、背景:

在linux上部署了一個tomcat容器,用來運行服務。其中tomcat是7版本,也是官網剛下的。

二、問題:

部署服務完成後,Xshell 啓動服務,啪啦啪啦。。。程序的日誌打印出來,控制檯 出現大量的中文日誌亂碼。

 

三、解決:

1、首先看下服務器系統的編碼

執行命令:echo $LANG

是美版 UTF-8格式,所以要去檢查 Xshell 終端的編碼格式

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

2、嘗試修改Xshell終端的編碼格式爲其他的如: GBK(中文格式)

這裏修改,或者在連接會話裏改,

 

3、再次重啓,看tomcat打印日誌

 

噢no~~~~還是亂碼,還是換種格式的亂碼了。說明不是簡單改個終端中文格式就能解決的。

4、再思考下,亂碼無非是系統編碼問題、終端編碼問題、或者兩者不一致問題。

對~~~還有,本身程序文件是否就是亂碼。

打開程序.class文件,還是我多慮了,是正常的。

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

正在考慮修改系統的 en_US.UTF-8爲 中文的 zh_CN.UTF-8。

隨口問了下同事,他說他部署打印中文是正常的,然後我打消了這個念頭。說明問題不是出在系統編碼上。要是改了還 不確定會不會影響別人。

6、我擦,我漏掉了tomcat這個鍋。根據差異定位到了是不是tomcat編碼設置引起的。

我先去conf文件夾下的 server.xml 看下服務HTTP請求協議有沒有設置編碼格式。

好吧,其實也是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

 

好吧,解決了~~~~~~~

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章