FreeBSD の newsyslogへのパッチ

2000年1月11日更新

FreeBSDのnewsyslogは,Solaris 2.xみたいな旧いシステムと違って,それなりに使えるものがついています.しかし,使い方によっては,以下のように若干不便な点もあります.

そこで,この二点に対応させてみました.

一つ目の問題点については,newsyslog.confでcountとして「-1」が指定されると,従来のrotateではなく,単純にログファイルを「hoge.log-YYYYMMDD」とrenameするものです.なお,もし24時間以内に再度renameする必要が出てきた場合には「hoge.log-YYYYMMDD-CC」という風に後に追番がつきます.

二つ目の問題点については,newsyslog.confでpidファイルとして「-」が指定されると,そのファイルの圧縮は,次に有効なpidファイルが指定された場合に,そこでまとめて処理するというものです.

例えば,私の環境では/etc/newsyslog.confでapacheに関するログの設定を以下のように記述しています.

/var/log/apache/access.log    644  -1   *   @T0000   Z   -
/var/log/apache/agent.log     644  -1   *   @T0000   Z   -
/var/log/apache/referer.log   644  -1   *   @T0000   Z   -
/var/log/apache/error.log     644  -1   *   @T0000   Z   /var/run/httpd.pid

また,これを公開したところ,福井@富士通さんより,whenフィールドに指定できる ISO 8601 準拠フォーマットのサポート範囲を,ISO 8601の仕様の範囲で,拡張するパッチをいただきました.具体的には [w][T[hh[mm[ss]]]] のように,曜日を 0から 7の範囲で指定できるようにするものです(0および7は日曜日).

なお,countとして-1を指定して,whenに時間間隔(24など)を指定した場合,そのログファイルを置くディレクトリには,ログファイル名の前にピリオドをつけた名前のファイルが自動的に作成されます.これは,最後にrenameしてからの時間を計るために利用しているものです.消さないでください.


newsyslogのパッチは以下の二つの形態で配布しています.


【やってないこと】


【変更履歴】

1999年12月23日
FreeBSD 3.4-RELEASE でも そのまま行けるのを確認した.
1999年12月08日
count=-1で,whenに時間間隔を指定した場合の問題を解決した.
福井@富士通さんの変更を取り込んだ.
1999年12月10日
タイムスタンプ用のファイル(.LOGFILE)を作成するときにモードの指定が抜けてたのを修正.
count = -1を使っていた場合,ログディレクトリでls -l .??*とやって,ファイルのモードがおかしかったらchmod 644 .??*してください.


ご意見・ご要望などはえとまでお願いします.


えとなやわらかいページへ