harukazepc’s blog

インターネッツとAndroidなどが大好きです。あとは日々のことなど。

logrotateの設定@CentOS

logrotateの設定を新規に追加した時に、うまく動かなかったのでメモ。若干ほんとにこれでいいのかメモ。
まぁrailsなんですが、apache+FCGI(mod_railsもかな)です。
ログローテーションして、reloadして、な設定。

複数インスタンスのログを、ファイルサーバ上にhostname付きで配置しています。

1.設定ファイルを準備:/etc/logrotate.d/rails を作成。

/path_to_log/production.hostname.log {
    daily
    rotate 60
    missingok
    notifempty
    sharedscripts
    postrotate
        /path_to_apachectl/apachectl reload > /dev/null 2>/dev/null || true
    endscript
}

2.logrotate対象となったか、確認

# logrotate -dv /etc/logrotate.d/rails
reading config file /etc/logrotate.d/rails
reading config info for /path_to_log/production.hostname.log

Handling 1 logs

rotating pattern: /path_to_log/production.hostname.log  after 1 days (60 rotations)
empty log files are not rotated, old logs are removed
considering log /path_to_log/production.hostname.log
  log does not need rotating
not running postrotate script, since no logs were rotated
 

となって、ローテーション対象に含まれん・・・なんでー。
ので、下記でむりくり対応。

3.logrotateの履歴?に対象ファイルを追記:/var/lib/logrotate.status

# vi /var/lib/logrotate.status
〜
"/path_to_log/production.hostname.log" 2006/01/01

上記のファイルは、logrotateがローテーションの要・不要の判定をするために、前回のローテーション日を記録しているもの。

上記に今回ローテーション対象とするファイルを追記して、「ほらローテーションはだいぶ前だよ」と教えてあげると、

# logrotate -dv /etc/logrotate.d/rails
reading config file /etc/logrotate.d/rails
reading config info for /path_to_log/production.hostname.log

Handling 1 logs

rotating pattern: /path_to_log/production.hostname.log  after 1 days (60 rotations)
empty log files are not rotated, old logs are removed
considering log /path_to_log/production.hostname.log
  log needs rotating
・・・

ときちんとローテーション対処と認識される。

うーんむりやり。

© harukazepc️