自动化运维工具--saltstack远程启动tomcat日志乱码

Posted by Yancy on 2015-11-20

自动化运维工具–saltstack远程启动tomcat日志乱码

最近在线上发布tomcat,想做到自动部署,可是出现了问题,就是日志输出会有乱码,用户名的getMyUserInfo 是一堆乱码,salt原理系统字符集没太深入的研究,后来在墙外看到一篇文章很实用,就做了下自己的总结。

开始我是salt执行远程脚本。

1
salt 'tomcat_A1' cmd.run '/etc/init.d/tomcat-account start'

直接这样去执行,发现会出现乱码。

这是日志输出结果,我用curl去调我的userinfoid: 调用之前我这边先删除了指定的用户信息redis的缓存,然后在用curl在另外一台机器上面调用看看。

tomcat_A1 机器日志:乱码:

1
2
3
4
5
6
7
8
1
nickname1:?????????
11111
nickname1:?????????
333333
3
4
?????????

在minion设置字符集增加LCALL=”zhUS.UTF-8″:

cat /etc/sysconfig/i18n

1
2
3
LANG="en_US.UTF-8"
LC_ALL="zh_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

cmd.run 调用时需要加入env=’{“LCALL”:“zhCN.UTF-8”}’:

1
2
3
4
salt 'tomcat_A1' cmd.run '/etc/init.d/tomcat-account sop' env='{"LC_ALL": "zh_CN.UTF-8"}'
###先关闭tomcat
salt 'tomcat_A1' cmd.run '/etc/init.d/tomcat-account start' env='{"LC_ALL": "zh_CN.UTF-8"}'
###在启动tomcat

在调用查看 日志就恢复正常了。数据库的用户名id也正常了,如果你写发布脚本把tomcat启动写在执行脚本里面的话,如果添加了不行,就拆分开,就可以了。

这是一次血的教训啊,对字符集不是很多,完全摸不着头脑,还好多普及了下,终于弄好了。