Docker程序之JAVA时区和日志乱码问题

 docker  docker  java   2016-11-23 

    在docker里 ,乱码似乎是司空见惯的事情,容器封装的java应用,经常在输出日志中看到歪七扭八的"代码",即便LANG值为zh_CN.UTF-8。

    而docker里的时区也是频繁,之前通过挂载系统中/etc/localtime解决容器级的时区,不过java应用也发现在日志中仍旧是UTC时间,一般容器时区准确了,也就没问题,如果还不行,尝试加上"-Duser.timezone=GMT+08"。


我说说我遇到的几种具体情况和解决方法吧。

1. tomcat

vim bin/catalina.sh
增加或修改以下内容
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+08"

2.netty

#!/bin/bash
export JAVA_HOME=/usr/java/jdk1.7.0_60
pid=/var/run/netty.pid
lib=/data/sspdsp/lib
export CLASSPATH=$CLASSPATH

conf=/data/sspdsp/conf
export LANG="en_US.UTF-8"

# Extra Java CLASSPATH elements. 
for f in $lib/*.jar; do
  if [ "$CLASSPATH" ]; then
    export CLASSPATH=$CLASSPATH:$f
  else
    export CLASSPATH=$f
  fi
done

$JAVA_HOME/bin/java -Xms1024m -Xmx2048m -Dfile.encoding=UTF8 -Duser.timezone=GMT+08 -cp $CLASSPATH com.emar.ssp.SspServer /data/sspdsp/conf/config.properties 200 &
echo $! > $pid 
echo "ssp-creative start"

3.resin

resin 作为web服务器,根据启动方式的不同,可以修改以下某一个。
> resin.xml          -Dfile.encoding=UTF-8
> resin.properties   jvm_args : -Dfile.encoding=UTF-8

4.jar

非web应用,直接启动jar程序,采用supervisord守护进程的方式,配置的启动命令是:

command=java -jar -Xms2048m -Dfile.encoding=UTF-8 -Dspring.config.location=./app.properties app.jar


点赞 打赏
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

交流分享

QQ扫一扫或点击二维码加入,群号577543189
微信扫一扫,手滑关注它
微信扫一扫,进入小程序

推荐文章

标签云集

友情链接  交换友链

推广位