Analog 5.01: キャッシュファイル大部分の人には、キャッシュファイルは必要ないでしょう。gzip の様な標準圧縮ソフトを使用してログファイルを圧縮することで十分でしょう。ログファイルの圧縮は、非常に多くの文字列の繰り返しにとても効果的です。私は、実際に約12倍の圧縮率を得ました。これは、多くの情報を失うことなく、あなたのファイルスぺースの問題を解決するでしょう。
キャッシュファイルは、またデータの事後処理や、スプレッドシートに読み込むのに、最適な書式ではありません。この目的のためには、コンピュータが読み込み可能な出力 を使うべきです。
多くの人がキャッシュファイルの使用の際に問題が起きており、壊れたデータを偶然記録している結果になっている。ログファイルを捨てる前に、あなたが何をしているのかを理解する必要があります。以下の 処理 についての議論を参照せよ。
もしこの先キャッシュファイルを使うなら、何が記録され、何が記録されないかを理解しておくことはまたとても重要です。要約すると、FROM と TO を含んだ全ての INCLUDE と EXCLUDE コマンド、それに全ての ALIAS と LOGTIMEOFFSET は、後でキャッシュファイルを読むときではなく、ファイル作成時に適用され なければならない。もし異なるオプションの組が欲しいときには、同じログファイルから幾つかのキャッシュファイルを作成しなければならない。
その理由は、キャッシュファイルからログファイル中の全てを復元することは 不可能 だからです。キャッシュファイルは、各ホストと各ファイルへの総リクエスト数についての情報を含みますが、例えば、どのファイルがどのホストによって読み込まれたかについての情報は含みません。(これを再現するためには、キャッシュファイルの大きさは、圧縮ログファイルと同じディスクスペースが必要になるでしょう。)従って、後に1つのファイルだけを見て、どのホストがそのファイルを読んだかを知ることはできません。
別の見方をすると、キャッシュファイルを読み込むとき、例えば HOSTEXCLUDE を行なうとすると、本当の意味での HOSTEXCLUDE を行なってはいない。なぜなら、そのホストが読むファイルは、まだ含まれているからである。ホストレポート、組織レポート、そしてドメインレポートからそれらのホストを除外しているだけである。これが、キャッシュファイルを作成するときに、なぜ全ての包含と除外をしなければならないかの理由である。
analog がキャッシュファイルを作成するとき、項目に対してこれ以上の別称(エイリアス)を適用しない。これは、2重のエイリアスを避けるためである。そのため、キャッシュファイルを作成するときに、望みの全てのエイリアスを行なわなければならない。同様に、2重の「時間差」を避けるため、LOGTIMEOFFSET 変数に従わない。そのため、どのオフセットもまたキャッシュファイル作成時に適用しなければならない。
また、キャッシュファイルは最近の7日間の各項目のリクエスト数のデータを含みません。というかできないのです。なぜなら、レポートが作成された時点では数値は異なっているからです。
最後に、時刻は5分刻みでのみ記録されます。
CACHEOUTFILE noneにより、キャッシュを保存しなくなります。あなたが、OUTPUT NONE を指定しない限り、キャッシュの出力と同時に通常の出力も得られます。上書きを避けるため、CACHEOUTFILE を既にあるファイル名に設定してはいけません。(以下のことには責任を持てません:ある幾つかのシステムでは、競合条件により、しばしばこの別設定が効かない可能性があります。また他のシステムでは、書き込み可だが読み込み可ではないときは、上書き可になる可能性があります。)OUTFILE について以前述べられたと同じように、日付を CACHEOUTFILE のファイル名に含めることができます。
CACHEFILE を使うかあるいは +U コマンドラインのオプションを使えば、以前に作成されたキャッシュファイルを読み込むことができる。LOGFILE コマンドの時と同様に、コンマとワイルドカードを使い数個のキャッシュファイルを読み込むことができ、UNCOMPRESS コマンドの仕組みを使えば、圧縮されたキャッシュファイルを読むこともできる。
もし、CACHEFILE もしくは CACHEOUTFILE の名前がディレクトリを含んでいないときには、analog はデフォルトの場所を探すか書き込むであろう。(この位置は、プログラムのコンパイル時に決められている。)例えば、Windows では、実行ファイル analog.exe と同じフォルダーになる。
数個の CACHEFILE と数個の LOGFILE からレポートを作成することが可能でありかつ有益である。LOGFILE と CACHEFILE コマンドは、基本的に累積的である。ただし、強制的な環境設定ファイル あるいはそのファイルから読み込まれた環境設定ファイルで指定されたどのログファイルやキャッシュファイルも、コマンドラインで指定されたファイルあるいはコマンドラインで指定された環境設定ファイル中で指定されたログファイル等を無視する。後者のファイルは、今度は、デフォルトの環境設定ファイル あるいはそのファイルから読み込まれた環境設定ファイルで指定されたどのログファイル等も無視し、それらはコンパイル時のオプションで指定されたファイルを無視する。通常は、あなたはこれについて心配する必要はなく、期待したとおりの結果が得られるであろう。
時には、キャッシュファイルに全ての項目を記録したくないことがあると思います。例えば、あなたの Web サイトにどのホストがアクセスしたなど構わないで、各ファイルが何回リクエストされたかのみを記録したいかもしれない。1つの項目を含めないためには、それに対応する LOWMEM コマンドを 3 に設定すれば良い。例えば、以下の様に
HOSTLOWMEM 3とすれば、キャッシュファイルからホスト名を除外することができます。これは重大な操作なので、この設定をすると analog は注意メッセージを出します。もしどのファイルがリクエストされたかも知る必要も無く、経過時間に対するリクエストの模様のみを記録したい時には、すべての6個の LOWMEM コマンドを 3 に設定することもできます。
キャッシュファイルを正しく取り扱う一つの方法がある。正しいばかりではなく、考え方としても最も簡単である。アイデアは、新しいログを取るときには、古いログファイルからキャッシュファイルを作成することである。そのため、各キャッシュファイルは、たった一つのログファイルから全てのデータを含むことになる。新しいキャッシュファイルを作成するのに、古いキャッシュファイルは使用してはいけない。従って、CACHEFILE と CACHEOUTFILE コマンドは、同じ環境設定ファイル中には設定されない。
以下に手続きを述べる。
Stephen Turner
analogについての質問はanalog-helpメーリングリストをお使い下さい