2000年1月11日更新
FreeBSDのnewsyslogは,Solaris 2.xみたいな旧いシステムと違って,それなりに使えるものがついています.しかし,使い方によっては,以下のように若干不便な点もあります.
- 「最新のXX個を残す」という設定しかできないため,ログをずっと保存する使い方には向かない.
- syslog経由ではなく,自前でログを吐いてるアプリケーション(HUPシグナルでログを切り替える)の場合に,一つのアプリケーションで複数のログを出力する場合(apacheなど)が考慮されていない.
そこで,この二点に対応させてみました.
一つ目の問題点については,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のパッチは以下の二つの形態で配布しています.
- FreeBSD 3.3R/3.4Rの/usr/src/usr.sbin/newsyslogへのパッチ
- FreeBSD 3.3R/3.4Rの/usr/src/usr.sbin/newsyslogに変更を適用し,ディレクトリを丸ごと固めたもの
【やってないこと】
- オンラインマニュアルの修正
【変更履歴】
- 1999年12月23日
- FreeBSD 3.4-RELEASE でも そのまま行けるのを確認した.
- 1999年12月08日
- count=-1で,whenに時間間隔を指定した場合の問題を解決した.
- 福井@富士通さんの変更を取り込んだ.
- 1999年12月10日
- タイムスタンプ用のファイル(.LOGFILE)を作成するときにモードの指定が抜けてたのを修正.
- count = -1を使っていた場合,ログディレクトリでls -l .??*とやって,ファイルのモードがおかしかったらchmod 644 .??*してください.
ご意見・ご要望などはえとまでお願いします.