ログローテーション

0pt

mod_log_rotate

良いらしい。エコらしい
http://d.hatena.ne.jp/hirose31/20090311/1236758719

logrotate

Unixについてるやつ。
logrotate.confに従ってファイルをリネームする。
/var/logらへはだいたい標準でやってくれてる。
cronで /etc/cron.daily/logrotate あたりに登録されている。
世代数指定できるが、あまり大きい数にすると重くなる(かも)
最大数を越えると削除されるので、定期的にアーカイブしなければならない。

apacheログをローテーションにかけるなら、新しいファイルをapacheに認識させないといけないので再起動しなければならない。

rotatelogs

apacheについてるやつ。
書き出し時に分ける。
apache起動するとrotatelogsというプロセスが立ち上がっている。
こちらの方が処理のタイムラグが少ない。
logrotateと違って削除されることはない。

# CustomLog "|/usr/sbin/rotatelogs /path/to/access.%Y%m%d.log 86400 540" combined

OpenSuSEにrotatelogsってどこにあるのー!
→/usr/sbin/rotatelogs2 にありました

windowsについてくるやつはいくつもプロセスが立ち上がって終了しない!おわってる!

サイズであれする

/path/to/logfle
{
    daily
    maxage 10
    rotate 10
    size 10M
    missingok
    sharedscripts
    postrotate
     /etc/init.d/apache2 reload
    endscript
}

logrotateで日別保存

/path/to/logfile
{
    daily
    missingok
    nocompress
    sharedscripts
    postrotate
      EXT=`date --date '1 days ago' '+%Y%m%d'`
      for f in $1
      do
        if [ ! -f "$f" ]; then
          /bin/cp $f.1 $f.$EXT
        fi
      done
      /etc/init.d/apache2 reload
    endscript
}


* 月別アーカイブ
tarするとき毎回cdしなきゃダメなのかなぁ。

この辺がヒントっぽかったけど無理だった
http://www.21linux.com/archives/2005/12/tar.html

>|
#!/bin/sh
#
# log-archive.sh {baseDirectory} {target}
#
base=$1
cd $base

dir="archive"
target="$2"

if [ ! -d "$dir" ] ; then
  mkdir "$dir"
fi

month=`date +%Y%m`
tarFile="$dir/$month.tar.gz"

if [ -f $tarFile ]
then
  tar zxvf $tarFile
fi

if [ -e $target ]
then
  tar zcvf "$tarFile" $target
  rm -rf $target
fi

参考

http://q.hatena.ne.jp/1200448522
http://kamoland.com/wiki/wiki.cgi?logrotate%A4%CE%C0%DF%C4%E...

「ログローテーション」について友人に書いてもらう。

あなたにとって「ログローテーション」とは?

ログインするとワンクリックでキーワードを投稿できます

ログインする 新規登録する

お気に入りの説明

0 pt
しないと イザっていう時に調査しづらくなってしまう必須 設定
もっと読む

関連したキーワードを持つお気に入り

他の人の「ログローテーション」を見る