HOMEインデックス

自宅サーバー構築記


8.logrotateについて

a. はじめに

  • ソースコンパイルのapache1.3.28の運用をはじめて、ログファイル(/usr/local/apache/logs/access_log)を見るとログローテーションがされていない。 そこでlogrotateについて再設定をおこなった。再設定といっても/etc/logrotate.d/apacheにlogの場所を記述するだけでいいのだけれど。

b. 設定方法

  • /etc/logrotate.d/apacheの記述を以下のとおりに修正。

usr/local/apache/logs/access_log {
missingok
postrotate
/bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid 2>/dev/null` 2> /dev/nul || true
endscript
}
/usr/local/apache/logs/error_log {
missingok
postrotate
/bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid 2>/dev/null` 2> /dev/nul || true
endscript
}

  • この記述でmissingokはusr/local/apache/logs/access_logが存在しなくてもエラーにならない指定。/bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid 2>/dev/null` はプロセスにハングアップシグナルを送り再起動することを意味し、2>/dev/nullは標準エラー出力を抑制する記述。最後の|| trueはエラーが発生しても終了ステータスに成功を意味する値を返す指定。
  • logrotateはcronで起動されている。/etc/crontabの中で定義されている/etc/cron.daily(ディレクトリ)中にlogrotateというシェルが存在する。その中は/usr/sbin/logrotate /etc/logrotate.confとなっており、/etc/logrotate.confが定義ファイルとなる。その中を見ると以下の記述がされている。

weekly → 一週間単位でローテーションする
rotate 4 → 4世代のバックアップを行う
errors root
create
include /etc/logrotate.d → 設定ファイルの格納されたディレクトリ
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}

  • このなかで/etc/logrotate.dで実際のログファイルの格納先を記述する。

HOMEインデックス