Tomcatのログ管理
Tomcatのログレベル設定は、$CATALINA_HOME/conf/logging.propertiesで行う。
出力レベルは、レベルが高い順に SEVERE/CONFIG/INFO/WARN/FINE/FINEST がある。
デフォルトはINFOである。
問題発生時において現在のログ情報から有益な情報が得られない場合、一時的に
ログレベルを変更してみるという選択もある。
ログレベルを変更するとログの量が瞬時に膨れ上がる可能性があるため、レベルの変更は
一度にひとつずつ行うのがよい。しかし、都度Tomcatの再起動が必要となる。
この辺も詳しく書きたいが時間がないので次へ・・・
Tomcatのログファイルcatalina.outには、catalina.shからの標準出力と標準エラー出力
がリダイレクトされる。そのまま放っておくと肥大化してディスクを圧迫するので、
ローテートしてやる必要がある。
サクッと調べてみると、apache付随のrotatelogsの機能を拝借するやり方が一般的のようだ。
また、OS側の機能であるlogrotateを利用することも可能。
logrotateで実装するなら、例えばこんな風に。
↓ ↓ ↓
http://blog.livedoor.jp/tsutaken/archives/729013.html
ただしこの両者は仕組みに違いがある。大きな違いは、
logrotateはlogrotate.confで指定した世代数(rotateで指定)
を超えると、それより古いものは自動的に削除する。
それに対し、rotatelogsは管理する世代数を設定しない。
・・・ってことだ。
つまりrotatelogsで実装するなら、古いログの削除処理を別途仕込む必要がある。
以下より抜粋
↓ ↓ ↓
http://www.atmarkit.co.jp/flinux/rensai/apache14/apache14a.html
他のところでもさんざん書かれているが、rotatelogsを利用するなら、以下の対処となる。
catalina.shを編集
以下行を削除 or コメントする
touch “$CATALINA_BASE”/logs/catalina.out
以下行を編集
>> “$CATALINA_BASE”/logs/catalina.out 2>&1 &
↓ ↓ ↓
| /usr/sbin/rotatelogs “$CATALINA_BASE”/logs/catalina.out.%Y-%m-%d 86400 540 &
86400で「一日毎」となる。さらにこの後に”540″と指定すると0:00に実行、となるそうだ。
↓ ↓ ↓
http://blog.goo.ne.jp/a24kane2000/e/e84b45ecf07df708cb089c12cbae5994
編集後はTomcat再起動が必要。が、たまに再起動は必要ないと書かれていることもある。
どっちなんだ。なんとなく必要な気がするが。
正確にはログローテートではないが、以下の方法にするとTomcat起動の度にその日の
日付が付与されたログファイルを生成するようになる。
以下行を編集
>> “$CATALINA_BASE”/logs/catalina.out 2>&1 &
↓ ↓ ↓
>> “$CATALINA_BASE”/logs/catalina.out.`date +%y%m%d` 2>&1 &
この場合もrotatelogsで実装した場合と同様に、古いログ削除用のスクリプトを
用意してcronに仕込む。
それにしても、オライリーのTomcatハンドブックにはログローテーションのことは
全然、書かれていなかった。うーむ、大事なことなのに。