[ 先頭 | 上へ | 前へ | 次へ | 目次 | 索引 ]

Analog 5.91beta1: 包含と除外


各項目を置換(エイリアス)してから、Analog はどの項目を対象とするかを判断します。 すべての行が解析されるのは、すべての項目が対象となっている場合だけです。 項目を対象とするかどうかは、ユーザが指定した INCLUDE および EXCLUDE コマンドによって判断されます。これらのコマンドは、例えばローカルユーザからのリクエストを除外したり、あるサブディレクトリ内のファイルのみを解析の対象としたりするのに使うことができます。例えば、
HOSTEXCLUDE mycomputer.myisp.com
は、そのコンピュータからのすべての要求を統計から除外します。 (特定のレポートの対象から、ある項目を除外する方法については、以下を参照してください。)

項目を包含するか除外するかを決定するルールは、以下のようになっています。 ある項目に適用されるすべてのINCLUDEEXCLUDE コマンドは、順番に評価され、その項目が包含されるか除外されるかは、マッチした最後のコマンドにより決まります。どのコマンドにもマッチしなかった項目については、最初のコマンドが除外だった場合は包含され、最初のコマンドが包含だった場合は除外されます。 例えば、以下の設定

FILEINCLUDE /~sret1/*
FILEEXCLUDE /~sret1/backgammon/*,/~sret1/analog/*
FILEINCLUDE /~sret1/backgammon/*.gif
は、わたし(sret1)のファイルだけを対象とするが、backgammon (訳注: ゲームの一種)と Analog のファイルは除外する。ただし、backgammon ディレクトリにある GIF ファイルについては包含するという意味になります。 一方、
FILEEXCLUDE /~sret1/*/img/*
は、わたしのディレクトリにある画像ファイル(訳注: img は通常画像(image)の略語として使われる)以外のすべてのファイルを解析するという意味になります。 (包含と除外がどうなっているのかわからなくなっても、SETTINGS ONを記述することで、いつでも現在指定したオプションがどのようになっているかを確認することができることを覚えておくとよいでしょう) 包含と除外の記述については、ワイルドカードを幾つでも使えます。また(スペースを入れずに)コンマで区切ることで、幾つでも併記することができます。

すべての包含と除外コマンドを以下に示します: HOSTINCLUDEHOSTEXCLUDE; FILEINCLUDEFILEEXCLUDE; BROWINCLUDEBROWEXCLUDE; REFINCLUDEREFEXCLUDE; USERINCLUDEUSEREXCLUDE; VHOSTINCLUDEVHOSTEXCLUDE; STATUSINCLUDESTATUSEXCLUDE


これらのコマンドに関する注意点を以下で説明します。

包含と除外の処理は、エイリアス(置換)を行なった後で行なわれますので、指定はエイリアス後の文字列で行なう必要があります。 (出力エイリアスコマンドが記述されていない場合、これは出力される各項目の文字列になります)

時には、ある項目が行に含まれていないといった場合もあります。これは、行にその項目用のフィールドが存在していない場合や、ブラウザがそうした情報を送信しない場合、また存在はしているが不正になっている場合などが考えられます。こうした行を包含したり、除外したりするには、INCLUDEEXCLUDE コマンドに特別な空のエントリを記述することで行ないます。 例えば

USERINCLUDE jim
USERINCLUDE ""
は、 jim というユーザと、ユーザが含まれていない行を包含するという記述になります。

ファイルにsearch argumentsが含まれている場合、REQINCLUDEREFINCLUDE は、やや直観的ではない動きをすることがあります。

コマンドの左側の引数の先頭にREGEXP:」や「REGEXPI:」をつけることで、包含や除外コマンドの引数に正規表現を使うことが可能になります。これについてはエイリアスの章で記述したので、詳細についてはそちらを参照してください。なお正規表現の指定は、コンマで区切られたリスト単位ではなく、行全体に対して適用されます。


HOSTINCLUDEHOSTEXCLUDE を使用するときは、Web サーバがログファイルにIPアドレスを数値で記録している場合には数値を、ホスト名で記録している場合 (あるいは、Analog のDNS 解決を利用して数値アドレスを解決している場合) にはホスト名を指定しなければなりません。数値アドレスに対しては、以下のような特別な書式を使うことができます。
HOSTINCLUDE 131.111.20.18      # 1個の IP アドレス
HOSTINCLUDE 131.111.20.*       # ワイルドカード
HOSTINCLUDE 131.111.20         # 上記と同じ意味
HOSTINCLUDE 131.111.20-23      # クラス C アドレスの範囲
HOSTINCLUDE 131.111.20.18/23   # サブネットマスク

STATUSINCLUDESTATUSEXCLUDE コマンドは他のコマンドとはやや異なっています。 このコマンドは、HTTP ステータスコードを扱います (コードについては、 HTTP 仕様 で定義されていて、ステータスコードレポートでみることができます。もっとも、HTTP ステータスコードについてよく知らないのであれば、そもそもこのコマンドを使おうとは思わないでしょう!)。コマンドの引数は、コンマで区切った範囲を指定する記述のリストになります。範囲の片側を記述しないことで、ステータスコードの最小のものから、もしくは最大のものまでという意味になります。例えば
STATUSINCLUDE 200-206,304,500-
は、ステータスコードが 200-206、304、500以上の行のみを対象とするという意味になります。

ステータスコード304(変更なし)を、リクエストレポート中に現われないように除外しようとする人がいますが、もっとよい方法があります。デフォルトで、Analog は ステータスコード304を成功したリクエストとして扱います。これは、ユーザに対してはすでにキャッシュされているドキュメントが提供されていると考えられるためです。しかし、以下のコマンドにより、これをリダイレクトされたリクエストとして扱うことができます。

304ISSUCCESS OFF
大部分の人にとっては、これは誤ったオプションです。というのもユーザにとっては、コード 304 はコード 200 と同じ意味を持つからです。なお、重ねていいますが、この意味を理解していないのであれば、デフォルトのままにしておいてください。
このカテゴリに入るコマンドとしてはFROMTO コマンドも挙げられます。このコマンドは解析対象とする期間を指定するものです。もっとも簡単な使い方は、FROM yyMMddFROM yyMMdd:hhmm といったものです。ここで yy は年の下二桁 (Analog は年が 1970 から 2069 年の間であると仮定します)、 MM は月、 dd は日、 hh は時間、 mm は分を表します。例えば、1999 年 7 月 1 日から、 2000 年 6 月 15 日の午後 1 時までのリクエストを解析したい場合は、以下のように記述します。
FROM 990701
TO   000615:1300
さらに、各項目の先頭に +- を付加することで、プログラムが実行された時刻からの相対時刻を表すこともできます。この場合、2桁以上の日を指定することも可能です。この表記を使うことで、以下のような設定が可能になります。
FROM -01-00+01   # 昨年度の明日の日付から
TO -00-0131  # 先月の終りまで (先月の最終日が 31 日でない
             # 場合でも大丈夫です)
FROM -00-00-112
TO   -00-00-01  # 最近 16 週間の統計
FROM -00-00-00:-06+01  # 最近 6 時間の統計
FROM および TO コマンドに対応するものとして、+F および +T というコマンドラインのオプションがあります。例えば、 +T-00-00-01:1800 は昨日の午後 6 時までの統計を行ないます。 なお、-F-T は、FROMTO の記述を無効にします。FROM OFFTO OFF も同様です。
ほとんどのレポートには、 INCLUDEEXCLUDE コマンドがあります。ここまで 説明してきた INCLUDE および EXCLUDE コマンドとは異なり、レポートに対するこれらのコマンドは、ログファイル中の行を除外するのではなく、特定のレポートの個々の行を除外します。

例えば、以下のコマンド

REFREPEXCLUDE http://your.site.com/*
は、「リンク元 URL レポート」からサイト内部のリンク元を除外しますが、「不成功リンク元レポート」、「リンク先サイトレポート」などからは除外しませんし (これらのレポートから除外したい場合は、各々 FAILREFEXCLUDEREFSITEEXCLUDE などを記述する必要があります)、REFEXCLUDE コマンドと同様に、これらのリンク元が記録されたログファイルの行を別の解析の対象から除外するものでもありません。

すべての包含、除外コマンドを以下に示します: REQINCLUDEREQEXCLUDE; REDIRINCLUDEREDIREXCLUDE; FAILINCLUDEFAILEXCLUDE; TYPEINCLUDETYPEEXCLUDE; DIRINCLUDEDIREXCLUDE; HOSTREPINCLUDEHOSTREPEXCLUDE; REDIRHOSTINCLUDEREDIRHOSTEXCLUDE; FAILHOSTINCLUDEFAILHOSTEXCLUDE; DOMINCLUDEDOMEXCLUDE; ORGINCLUDEORGEXCLUDE; REFREPINCLUDEREFREPEXCLUDE; REFSITEINCLUDEREFSITEEXCLUDE; SEARCHQUERYINCLUDESEARCHQUERYEXCLUDE; SEARCHWORDINCLUDESEARCHWORDEXCLUDE; INTSEARCHQUERYINCLUDEINTSEARCHQUERYEXCLUDE; INTSEARCHWORDINCLUDEINTSEARCHWORDEXCLUDE; REDIRREFINCLUDEREDIRREFEXCLUDE; FAILREFINCLUDEFAILREFEXCLUDE; BROWSUMINCLUDEBROWSUMEXCLUDE; BROWREPINCLUDEBROWREPEXCLUDE; OSINCLUDEOSEXCLUDE; VHOSTREPINCLUDEVHOSTREPEXCLUDE; REDIRVHOSTREPINCLUDEREDIRVHOSTREPEXCLUDE; FAILVHOSTREPINCLUDEFAILVHOSTREPEXCLUDE; USERREPINCLUDEUSERREPEXCLUDE; REDIRUSERREPINCLUDEREDIRUSERREPEXCLUDE; FAILUSERINCLUDEFAILUSEREXCLUDE

出力エイリアスを使っている場合、これらの包含と除外コマンドは、エイリアス適用前の引数に対して適用されます。 (反対に、通常の INCLUDE および EXCLUDE コマンドは、エイリアス適用後の引数に対して適用されます。)

すべてのディレクトリ名は、スラッシュ(/)で終わりますので、DIRINCLUDEDIREXCLUDEREFSITEINCLUDEREFSITEEXCLUDEでは、記述がなくても、暗黙のうちにスラッシュを付加します。そのため、以下のような場合に、混乱を引き起こしてしまうことがあります。

REFSITEEXCLUDE http://my.host.com/*     # おそらく意図したようには機能しない
は、参照元サイトレポートから、http://my.host.com/ のサブディレクトリを除外しますが、サイト自身は除外しません。サイトを完全に除外するには、
REFSITEEXCLUDE http://my.host.com/
と記述します。

INCLUDEEXCLUDE コマンドの一部では、pagesというキーワードを使うこともできます。よく用いられるコマンドである

REQINCLUDE pages
は、リクエストレポートに、ページ(page)のみを包含するようにします。
これ以外にも、以下で説明するように、INCLUDEEXCLUDE コマンドが何種類かあります。 まず、Analog は、PAGEINCLUDEPAGEEXCLUDEという名前のINCLUDE/EXCLUDE系コマンドにより、どのファイルをページとしてカウントするか(つまり、ページリクエストとしてどのリクエストがカウントされるか)を決定します。デフォルトでは、(大文字と小文字を区別しない)*.html*.htmとディレクトリ(*/)がページ(page)としてカウントされます。なお、以下のコマンドにより、これを変更することもできます。
PAGEINCLUDE *.asp
PAGEEXCLUDE /sret1.html
この例では、*.aspはページとみなされますが、/sret1.htmlはページとはみなされません。(ファイルにsearch argumentsが含まれている場合、PAGEINCLUDE および PAGEEXCLUDE は、ファイル名のうちクエスチョンマーク(?)の前の部分だけを評価します。)
レポートによっては、Analog は出力中のファイル名に対してリンクを作成することができます。LINKINCLUDE 系のコマンドによって、どのファイルをリンク作成の対象とするかを明示的に指定することができます。例えば、
REQLINKINCLUDE pages,*.pdf
は、リクエストレポート内のページと PDF ファイルに対するリンクを作成します。 LINKINCLUDE系のすべてのコマンドを以下に示します: REQLINKINCLUDEREQLINKEXCLUDE (リクエストレポート)、REDIRLINKINCLUDEREDIRLINKEXCLUDE (リダイレクトレポート)、FAILLINKINCLUDEFAILLINKEXCLUDE (Failure Report)、REFLINKINCLUDEREFLINKEXCLUDE (リンク元 URL レポート)、REDIRREFLINKINCLUDEREDIRREFLINKEXCLUDE (Redirected Referrer Report)、FAILREFLINKINCLUDEFAILREFLINKEXCLUDE (Failed Referrer Report)。 作成されるリンクは、BASEURL コマンドの影響も受けますので、気をつけてください。
最後に、ROBOTINCLUDEROBOTEXCLUDEというコマンドについて説明します。これらは、OSレポートで、どのブラウザを「ロボット」とみなすかを判断します。例えば、以下のように記述します。
ROBOTINCLUDE Googlebot/*

もう一つ、URL 末尾の search argument を包含するか、除外するかを判断する INCLUDE and EXCLUDE 系のコマンドもあります。しかし、このコマンドにはやや複雑な事情が存在するため、次の章で説明します。
Analog ホームページ

Stephen Turner
23 August 2003

Analog についての質問はanalog-help メーリングリスト をお使いください。 (訳注: 日本では analog-jp メーリングリスト をご利用ください)

[ 先頭 | 上へ | 前へ | 次へ | 目次 | 索引 ]