tomcat6のデフォルト設定のログ出力は、あまり使い易い感じではないので、好みの環境に設定。
1.不要なログの出力抑止
2.ログ出力ディレクトリのvar配下への移動
3.アクセスログの取得
4.ログのローテーション設定
<参考ページ>
http://www.atmarkit.co.jp/fjava/rensai4/safetomcat_02/safetomcat_02_3.html
http://www.javaroad.jp/opensource/js_tomcat6.htm
1.不要なログの出力抑止
デフォルト設定で「catalina.out」以外のログ出力がされるが、これを抑止する。$CATALINA_HOME下の「conf」ディレクトリの中にある「logging.properties」を「logging.properties.save」とでもリネームして、tomcatを再起動する(reloadではダメ)。
2.ログ出力ディレクトリのvar配下への移動
デフォルトでは、$CATALINA_HOME下の「logs」ディレクトリになっているが、ログは「var/log」の下に持っていきたい。しかし、「catalina.out」の出力先指定は、スクリプト埋め込みになっているほか、アクセスログの出力先指定も$CATALINA_HOME下であることが前提となっている。このため、リンクで解決する。具体的には、「var/log」の下に、tomcat用のログ保管ディレクトリ「tomcat」を作成し、$CATALINA_HOMEの下に、このディレクトリへのリンクを「logs」の名前で作成する。オーナー・グループをtomcatユーザにするなど、適切なアクセス権設定を忘れずに。
3.アクセスログの取得
セキュリティや障害解析の観点から、tomcatへのアクセス証跡をログ取得する。$CATALINA_HOME下の「conf」ディレクトリの中にある「server.xml」を編集。デフォルトのファイルで、コメントアウトされている「<Valve className="org.apache.catalina.valves.AccessLogValve"~」があるので、これをコメント解除して、必要な修正を行う。ファイル名を好みの形式に修正するほか、ログローテーションはlogorotateに任せたいので、tomcatではログローテーションを行わないように指定。こんな感じ。
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="access" suffix=".log" pattern="common" resolveHosts="false" rotatable="false"/>
4.ログのローテーション設定
ログのローテーションは、logrotateに一元化。「/etc/logrotate.d」の下に、「tomcat」というファイル名でローテーションを設定。こんな感じ。
ローテーションの間隔(「weekly」など)、保管期間の指定(「rotate 4」など)、圧縮の指定(「compress」など)などは、共通の設定(「/etc/logrotate.conf」)に指定しているので、個別に指定する必要はなし。
/var/log/tomcat/* {
copytruncate
missingok
notifempty
postrotate
/bin/kill -HUP `cat /var/run/tomcat.pid 2>/dev/null` 2> /dev/null || true
endscript
}
<参考ページ>
http://www.atmarkit.co.jp/fjava/rensai4/safetomcat_02/safetomcat_02_3.html
http://www.javaroad.jp/opensource/js_tomcat6.htm