multilog scriptscript はいくつかの引数から成ります。 各引数は一つの動作を明記します。 その動作は入力の各行の順に実行されます。 multilog がシェルから起動されるとき、動作は引用符で囲まれる必要があるシェルのメタキャラクタを含めてもよいことに注意してください。
標準入力の終りに達すると multilog はコード0で終了します。 標準入力の最終行に改行がなければ、multilog は改行を挿入します。
メモリ不足が起きたときや、 別の multilog プロセス がすでに同じ自動切り替えのログに書いているときには、入力を読むのをやめ、標準エラーにメッセージを書き出して、コード111で終了します。
いったん入力を読み始めたあとにディスクへの出力でトラブルがあると、 multilog は標準エラーにメッセージを書いて、休止し、再度試みます。 データが失われることはありません。 これによりmultilogの入力を生成している側のプロセスがブロックされることになるかもしれないことに注意してください。
multilog は TERM シグナルを受け取ると、データを次の改行コードまで読み込んで処理したあと、終了します。 このとき、標準入力はまだ処理されていないデータの先頭を指しています。
-patternは pattern が行に合えばその行の選択が解除されます。 動作
+patternは pattern が行に合えばその行は選択されます。
patternは * とそれ以外からなる文字列です。 それは同じ順番で全ての * とそれ以外の文字に合う文字列をつなぎ合わせたものに合います。 * でない文字は文字自身に合います。 pattern の最後ではない * は pattern で直後に現れる文字を含まない任意の文字列に合います。 pattern の最後にある * は任意の文字列に合います
例えば、動作
+helloは hello を選択します。 hello world は選択しません。
動作
-named[*]: Cleaned cache *は named[135]: Cleaned cache of 3121 RRs の選択を解除します。 最初の * は ] を含まない任意の文字列に合います。
動作
-*は全ての行の選択を解除します。
メモリを消耗しないように、実際には multilog は各行の最初の 1000 文字のみに対して pattern を調べます。
eは標準エラーに選択された各行(の最初の200バイト)を出力します。
=fileは file の中身を選択された各行(の最初の1000バイト)で置き換えます。このとき、足らない部分を 1001 バイトまで改行コードで埋めます。 電源断に対しては file は保護されません。
例えば、一続きの動作
-* +STAT* =log/statusは STAT で始まる最新の行のコピーとして log/status を維持します。
tは各行の先頭に @ と正確なタイムスタンプとスペースを挿入します。これは tai64n と同じ形式を用いています。 これは最初の動作にだけ必要とされます。 タイムスタンプが挿入された後に、パターンが行に適応されます。
tai64nlocal を使って、そのタイムスタンプを人が読める形式に変換できます。
dirはログ dir へ選択された行を追加します。 dir が存在しなければ、multilog は作成します。
ログの形式は以下の通りです。 dir はディレクトリです。古いログファイル郡とログファイル current と multilog がその動作の記録するための他のファイルがあります。 古いログファイルの名前は @ で始まり、そのファイルがいつ終了したのかを示す正確なタイムスタンプがそれに続き、次のようなコードの一つを付けて終ります。
multilog が動いている間は、current のモードは 644 です。 multilog は標準入力の終りに達したら、 current を安全にディスクに書き込み、current のモードを 744 に設定します。 再起動したとき、current のモードは 644 に戻され、新しい行を書き続けます。
multilog は current が十分大きいと判断したら、current を安全にディスクに書き込み、current のモードを 744 に設定し、current を古いログファイルとして名前を変えます。
動作
ssizeは続いて記述される動作 dir の最大ファイルサイズを設定します。 multilog は current が size バイトであれば、十分大きいと判断します。 (multilog は最大ファイルサイズの最後の 2000 バイト以内に改行コードがあれば、十分大きいと判断します。行の境目でログファイルを終らせようと試みるためです。) size は 4096 と 16777215 の間でなければなりません。 デフォルトの最大ファイルサイズは 99999 です。
動作
nnumは続いて記述される動作 dir のログファイルの数を設定します。 current の名前を変えた後に、num 個以上の古いログファイルがあれば、multilog は最小のタイムスタンプが付いている古いログファイルを削除します。 num は 2 以上でなければなりません。 デフォルトのログファイルの数は 10 です。
動作
!processorは続いて記述される動作 dir で使うプロセッサを設定します。 multilog は processor を通して current にデータを与え、current の代わりに古いログファイルとして出力を保存します。 multilog は processor が記述子 5 に書き出すどんな出力も保存し、processor を次のログファイルで動かしたときに その出力を記述子 4 で読めるようにします。 信頼性のために、processor はその出力を作成するときに問題が生じたら 0 でないコードで終了しなければなりません。multilog は再びそれを起動させます。 processor を動かすことは multilog に入力を与えるプログラムを止めてしまうかも知れないことに注意してください。