mokky14's IT diary

IT関係の仕事メモ、勉強会の感想など書いてます。

Tomcatの出力ログの日本語対応

Tomcatで動作してるサーブレットにて、サーブレットからSystem.out.printlnで(catalina.outに)出力した日本語が文字化けするという動作の調査を行ったのでそのメモ。

対応としては、Tomcat起動時のLANG変数を設定すればOK。

ついでに、catalina.outの出力時刻がJSTな時刻になってないのも気になったので確認したら、こちらはJava起動時のtimezone指定で対応できる事が分かった。

起動ユーザの環境変数に設定するのも変なので、起動スクリプトに設定することで対応した。
以下、/etc/init.d/tomcatの設定値。

#!/bin/sh
# chkconfig: 345 99 15
# description: tomcat
INSTDIR=/usr/local/apache-tomcat-7.0.42
BINDIR=$INSTDIR/bin
export JAVA_HOME=/usr/java/jdk1.6.0_45
#文字コード設定
export LANG=ja_JP.UTF-8
#Timezone設定
export JAVA_OPTS="-Duser.timezone=JST"

case $1 in
"start" )
        $BINDIR/startup.sh > /dev/null
        ;;

"stop" )
        $BINDIR/shutdown.sh > /dev/null
        ;;

"restart" )
        $BINDIR/shutdown.sh > /dev/null
        $BINDIR/startup.sh > /dev/null
        ;;
* )
        $BINDIR/catalina.sh $1
        ;;
esac

これで解決した。