(View this PageEdit this PageUploads to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide)
[blog] [ML] [todo] [CVS] [bug] [apache log] [swiki log] [statistics] [map] [man] [info] [アンテナ]

ログファイルの実装と後処理問題


ちょっと思ったこと。

通常のアプリの実装でログファイルを実装した場合、プログラムは下記のように
書くのが一般的でしょう。

(1) ログファイルをオープン(ないときは新規作成)
(2) (1)で取得したファイルディスクプリクタ(fd)を保持し、ログ出力時にfdにアペン
ド。

したがって アプリ実行中にログファイルを削除し、touchで作成しても、fdは
一致しなくなる(当然のこと)
ということは、アプリ実行中にログファイルをいじくってはいけない。

これを解決するには、
  1. ログをいじってから、アプリを再起動する。
  2. ログをコピーして、コピーしたログをいじる(この場合、ログの肥大化は避けられな
い)
logrotateでは、syslog取得時には、1の方法を用いてる。


-----------

Links to this Page