Tomcatのデフォルトのログ設定
タイトルの通りですが、今回はTomcatのログファイルに関する設定についてです。
Tomcatはデフォルトの設定のままでは多くのログファイルを出力します。
ただ、中には運用上不要なものが多く、ログを出しっぱなしだとファイル数が増えるばかりでリソースを圧迫してしまいます。
そこで、今回はその設定方法を記します。
今回は以下の記事を参考にさせていただきました。
Tomcatで出力されるログファイル
- catalina.out
- catalina.YYYY-MM-DD.log
- localhost.YYYY-MM-DD.log
- manager.YYYY-MM-DD.log
- host-manager.YYYY-MM-DD.log
- localhost_access_log.YYYY-MM-DD.txt
このうち残すログファイルは以下2つで十分でしょう。
- catalina.out
- catalina.YYYY-MM-DD.log
ただしNginxやApacheなどと連携していない場合はlocalhost_access_log.YYYY-MM-DD.txtも残しておいた方がいいかもしれません。
catalina.outのローテート設定
ログファイルのローテート設定
今回はTomcat8で実施しているので、以下のファイルを編集します。(環境に合わせてください)
vim /etc/logrotate.d/tomcat8
/var/log/tomcat8/catalina.out { copytruncate daily rotate 10 compress missingok dateext create 0644 tomcat tomcat
内容を簡単に説明しますと、
- copytruncate:コピー後、元のログファイルの内容を消去する
- daily:1日1回ローテーションを実行する
- rotate:残す世代数(ファイル数と考えてもらえれば...環境に合わせて変更してください。)
- compress:最新世代以外は圧縮する
- missingok:指定のログファイルが存在していなくてもエラーを出さない
- dateext:ファイル名の末尾に日付をつける
- create 0644 tomcat tomcat:ログファイルの権限
となります。
なんのこっちゃっと思われるパラメータもあると思います。
もっと詳しく知りたい方は調べてみてください。
logrotateの設定確認
次に以下のコマンドで実行確認をしてみます。
logrotate -d /etc/logrotate.d/tomcat8
このコマンドはあくまで設定の確認であり、実際にローテーションされるわけではありません。
とりあえず実行前の確認用として見てみましょう。
以下のようにエラーなどが特に出力されていなければ問題ありません。
reading config file /etc/logrotate.d/tomcat8 reading config info for /var/log/tomcat8/catalina.out Handling 1 logs rotating pattern: /var/log/tomcat8/catalina.out after 1 days (30 rotations) empty log files are rotated, old logs are removed considering log /var/log/tomcat8/catalina.out log needs rotating rotating log /var/log/tomcat8/catalina.out, log->rotateCount is 30 dateext suffix '-20190130' glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' removing /var/log/tomcat8/catalina.out-20180513.gz removing old log /var/log/tomcat8/catalina.out-20180513.gz removing /var/log/tomcat8/catalina.out-20180520.gz removing old log /var/log/tomcat8/catalina.out-20180520.gz removing /var/log/tomcat8/catalina.out-20180527.gz removing old log /var/log/tomcat8/catalina.out-20180527.gz removing /var/log/tomcat8/catalina.out-20180603.gz removing old log /var/log/tomcat8/catalina.out-20180603.gz removing /var/log/tomcat8/catalina.out-20180610.gz removing old log /var/log/tomcat8/catalina.out-20180610.gz removing /var/log/tomcat8/catalina.out-20180617.gz removing old log /var/log/tomcat8/catalina.out-20180617.gz removing /var/log/tomcat8/catalina.out-20180624.gz removing old log /var/log/tomcat8/catalina.out-20180624.gz removing /var/log/tomcat8/catalina.out-20180701.gz removing old log /var/log/tomcat8/catalina.out-20180701.gz copying /var/log/tomcat8/catalina.out to /var/log/tomcat8/catalina.out-20190130 truncating /var/log/tomcat8/catalina.out compressing log with: /bin/gzip removing old log /var/log/tomcat8/catalina.out-20180708.gz
「log needs rotating」と表示されているように、実際にlogrotateを実行すればローテーションされるようになります。
以下のように「log does not need rotating」などが出ても、現時点でローテーションをする分のファイル数がないというだけで気にする必要はありません。
reading config file /etc/logrotate.d/tomcat8 reading config info for /var/log/tomcat8/catalina.out Handling 1 logs rotating pattern: /var/log/tomcat8/catalina.out after 1 days (10 rotations) empty log files are rotated, old logs are removed considering log /var/log/tomcat8/catalina.out log does not need rotating
logrotateの実行
それでは以下のコマンドでlogrotateを実際に実行してみましょう。
本来はcronで実行されるものですが、実行タイミングまで待っていられない場合は以下コマンドで実行してみてください。
logrotate -f /etc/logrotate.d/tomcat
これでcatalina.outのファイルはローテート設定されるはずです。
すでにファイルが溜まっている方はファイルが減っていることを確認してください。
localhost.YYYY-MM-DD.logのローテート設定
localhost.YYYY-MM-DD.logの設定に関しては探してもイマイチわかりませんでした。。。
なので、以下を参考にcronでshellを実行しています。
shellファイルの場所に関しては、それぞれ環境に合わせて設置してください。
mkdir -p /etc/tomcat8/shell vim /etc/tomcat8/shell/logDel.sh
過去10日分のログファイルのみ残す設定にしています。
#!/bin/bash LOG_DIR=/var/log/tomcat8/ delfiles=`find ${LOG_DIR}*.log -mtime +10` for a in $delfiles do echo -e "delete file: ${a}" > /dev/null 2>&1 rm -f ${a} done
あとはこのファイルをcronで実行するようにスケジューリングすれば大丈夫です。
今回は4時に実行されるように設定しました。
0 4 * * * sh /etc/tomcat8/shell/logDel.sh
まとめ
だいぶ大胆にログファイルは整理しましたが、不要なものが大半だったので身軽になりました。
私の環境では2ファイルのみ残すようにしていますが、人によっては当然必要なログファイルの種類や過去分の数は変わってくると思うので、それぞれ環境に合わせて設定してみてください。
男の隠れ家 特別編集 必ず観たい注目の美術展2018-2019
- 作者:三栄書房
- 発売日: 2018/10/03
- メディア: Kindle版
- 作者:水野 芳春
- 発売日: 2013/06/19
- メディア: 単行本(ソフトカバー)
命の格差は止められるか ハーバード日本人教授の、世界が注目する授業(小学館101新書)
- 作者:イチロー・カワチ
- 発売日: 2013/08/16
- メディア: Kindle版