2013年9月16日月曜日

logrotateのルール追加する方法

■環境
CentOS 6.3 64bit
logrotate 3.7.8

■設定
grep "include" /etc/logrotate.conf
/etc/logrotate.d をincludeしていることを確認する
cd /etc/logrotate.d

touch test
vim test
/var/log/test.log {
  compress
  missingok
  notifempty
  daily
  create 0600 root root
}

上記でtest.logというログファイルが日時でローテートされます
簡単にパラメータを説明すると
  • compressはローテートgzip圧縮
  • missingokはtest.logという名前のログファイルが存在しなくてもエラーにしない設定
  • nitifemptyはファイルが0バイトならローテートしない設定
  • dailyは日時でローテートする設定
  • createはファイルを生成する際に所有者と権限を指定

■実行
logrotate -f /etc/logrotate.conf

test.logが新たに作成され古いログが実行した日付が付与されたgzip形式で出力されることを確認する
ちなみにgzipで圧縮されたファイルは「zcat」コマンドで中身を確認することができる

また常に起動しているプロセスの場合にはpostrotate~endscriptを使用してHUPシグナルを送る等をしないと
ローテートしてもローテート前のファイルに対してプロセスはログを履き続けてしまうのでちょっとした工夫が必要です
その辺の設定はsyslog用のlogrotateファイルの設定を見るとちょっとイメージが湧くかもしれません

■参考サイト

0 件のコメント:

コメントを投稿