logrotateを使う

ログファイルによってディスクフルにしないようにするためには、logrotateを利用するわけだが、一部ハマったことがあったので、記録しておく。
1.logrotateを実行すると怒られる
$ sudo /usr/sbin/logrotate /etc/logrotate.conf
error: skipping “(ログファイルのパス)/logs/debug.log” because parent directory has insecure permissions (It’s world writable or writable by group which is not “root”) Set “su” directive in config file to tell logrotate which user/group should be used for rotation.
どうやらログが記録されているフォルダの権限が、rootユーザではないことが原因のようだ。(腑に落ちない点はあるが。。。。)
設定ファイルにsu設定を行っておき、ログの書き込みを行うことが可能なユーザー、グループを指定する。
$ cat /etc/logrotate.d/hogehoge
(ログファイルのパス)/logs/debug.log {
daily
rotate 7
missingok
notifempty
create 0664 apache apache
su apache apache
nodateext
}
2.ローテートされたファイルに日付が付加される。
昔は、ローテートされたファイルに数字が付加されていたような気がしたが、Cent OS 7では、ファイル名-YYYYMMDDになっている。
見やすいのだが、プログラムでログファイルを自動解析しようとするといささか不便である。
/etc/logrotate.conf
に dateext が設定されていることが原因。これをコメントアウトするか、個別のログで解除したい場合には、上記例のように nodateext を設定すればよい。
参考サイト:
ログローテートしない – 揮発性のメモ
logrotate パーミッション エラー (r271-635)

カテゴリーUNIX

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です