Home » Programing, Server » Tomcatのログローテート

Check     このエントリーをはてなブックマークに追加

Tomcatのlogsディレクトリにある、catalina.out。

デフォルトだとすぐに肥大化してしまうので、1日1度、ローテーションするように設定を変えましょう。

まずは、Tomcatの起動バッチファイルである、$CATALINA_HOME/bin/catalina.sh を編集する。

#この記述を削除
touch “$CATALINA_BASE”/logs/catalina.out

#下記の記述を変更する(変更箇所は2箇所)
# rotatelogsの位置は各環境にあわせる。
“$CATALINA_BASE”/logs/catalina.out 2>&1 &

| /usr/local/apache2/bin/rotatelogs “$CATALINA_BASE”/logs/catalina.out.%Y-%m-%d 86400 540 &

これで、Tomcatを再起動すれば、catalina.out.[日付]ファイルを作成してくれるようになる。毎日再起動の必要もなく安全だ。

そして、catalina.out.[日付]ファイルを削除するバッチも作成した。
[perl]
#!/usr/bin/perl

use strict;
use Date::Simple;

my $logdir = “/usr/local/tomcat/logs”;
my $store_day = 60;

my $date = Date::Simple->new();
$date = $date – $store_day;
my $deletedate = sprintf(“%04d”,$date->year)
.sprintf(“%02d”,$date->month)
.sprintf(“%02d”,$date->day);

opendir(DIR, $logdir);
my @file = readdir(DIR);
foreach my $file(@file){
if ($file =~ /^[^.]+\.([\d\-]+)\.log$/){
my $filedate = $1;
$filedate =~ s/\-//g;
if ($filedate < $deletedate){ `/bin/rm -f $logdir/$file`; } } } closedir DIR; [/perl] $logdirはTomcatログディレクトリの位置、$store_dayに保存する期間を日数で指定し、後はcrontabに1日1度削除するように設定すれば完了。

Check     このエントリーをはてなブックマークに追加
タグ: