AN HTTPDにアクセスがあるとログファイルにその記録が残る。AN HTTPDのログファイルには以下の7種類がある。
・アクセス httpd.log
・エラー errors.log
・参照先 referer.log
・ユーザエージェント ua.log
・プロセス process.log
・ISAPI isapi.log
・トレース trace.log
ログは CGIなどのデバッグをする場合にも、また自宅サーバを公開したときにサーバ管理するためにも、トラブルの手掛かりを得るためにも、あるいは異常な動作をしていないかをチェックするためにも非常に重要な情報源である。適切な設定を行い、適宜チェックするように心がけることが大切であろう。
|
- ログタブの設定
ログビューア:ログファイルを表示するアプリケーションを指定する。デフォルトの write はワードパッドである。普段自分が使用しているテキストエディタを指定するのがよいであろう。私は EmEditor を使用しているので C:\Program Files\EmEditor3\emeditor.exe と設定している。PATHが通っていない場合にはこのようにフルパスで指定する。write や notepad などに設定している人に、お勧めは AN HTTPDの使用環境について でも書いたが、TeraPad である。
ログ更新:ログファイルを別ファイルに格納する頻度を設定する。「毎回」とするとAN HTTPDを起動する度に以前の httpd.log などのファイルを httpd.yyyymmdd.nn.log のように 年月日.通し番号 付きのファイル名に変更する。「更新しない」ではログは常に同じファイルに追加書き込みされる。デフォルトはこのモードであり、AN HTTPDを自宅サーバとしてではなく CGIのチェック用に使う場合はこのままでいいかもしれない。「毎月」あるいは「毎日」にすると、月が変わる度にあるいは日にちが変わる度にファイル名が更新される。自宅サーバを公開していて、月に一度アクセス解析をするのであれば、「毎月」にするのがベストと思う。古いログの削除も楽になる。もし一ヶ月分のログを溜めるとファイルサイズが極端に大きくなるようなら「毎日」にしてもいいかもしれない。
ログファイル:アクセス結果を記録する。例えば AN HTTPD を C:\Program Files\httpd にインストールしたのであれば、デフォルトでは C:\Program Files\httpd\httpd.log となっている。他のログファイルも同一のフォルダに格納しておくと扱い易いので C:\Program Files\httpd\log\httpd.log のように log だけのフォルダを作成するのがいいと思う。生のログは人に見せるものではないので、ドキュメントルートの下位にはしないのがいいかと思う。
ログフォーマット:「標準」にすると Apache 互換のフォーマットで出力される。あえて「標準」以外にする理由は何もない。
エラーは記録しない:チェックすると httpd.logファイルには正常なアクセスのみが記録されるようになる。すなわち、400,401,403,404,500,501 などの 400番台および 500番台のエラーログは httpd.log には記録されない。ただし、エラーログには、記録される。
このオプションはCodeRedやNimdaのアクセスが怒涛のように押し寄せた頃に、本来のアクセスが埋もれてしまうのを防ぐ目的で設けられた。現在では特にチェックする必要はないかもしれない。
エラー:AN HTTPDで発生したエラーを記録する。デフォルトではAN HTTPDをインストールしたパスに errors.logファイルが作成される。この上で説明したように C:\Program Files\httpd\log\errors.log のように logフォルダを作成して httpd.logと同じパスに設定するとよい。エラーの中でエラー404 についてはリンク切れ発見の手掛かりになるので時々確認するよう習慣付けるのがよいだろう。
参照先、ユーザエージェント、プロセス、ISAPI:それぞれ、リンク元(HTTP_REFERER)、ブラウザ名(HTTP_USER_AGENT)、コマンドラインからの実行、ISAPIの実行が記録される。自宅サーバを公開したときには参照先とユーザエージェントにチェックしておくと後で参考になるかもしれない。プロセスとISAPIはCGIのデバッグ時に有効なことがある。この上の説明と同様、同じlogフォルダにファイルを格納するのがよい。
トレース:チェックするとサーバへのリクエストとレスポンスがヘッダを含め全て trce.log に記録される。AN HTTPDの動作チェックをするときに使う。チェックしたままで使い続けると、膨大なログが吐き出されるので必要なとき以外は絶対にチェックはしないこと。ログの中で HTTPサーバへの入力は "<<<",出力は ">>>" で表示される。なお、データを文字列として扱うので、バイナリデータに 0 があると 0 の前までしか表示されない。
トレースはAN HTTPDをWebサーバとして動作させているときだけでなく、プロクシとして使っているときにも使える。インターネット上の他のサーバのヘッダを調べたい場合にはトレースをオンにし、AN HTTPDのプロクシ経由でアクセスすれば知ることができる。
- ログの監視
自宅サーバを公開すると、定常的にログを見てアクセス状況を監視し続けた方がよい。その際、その度にログファイルを開くのも結構面倒である。この上でログビューアとして紹介した EmEditor や TeraPad でログを開きっぱなしにし、ファイルが更新されると自動的に読み込む設定をしておくと常に最新のログファイルを開いていることになるのでなかなか便利である。例えば TeraPad では以下のように設定する。
ツール -> ツールの設定 -> その他タブの中にある以下にチェックする。
v アクティブ時にファイルのタイムスタンプをチェックして際読み込み
v 問い合わせメッセージを表示する
v 再読込前の表示一を記憶する
TeraPadのウィンドウをアクティブにする度に、ログファイルが更新されていれば再読込を実行するかどうかの問い合わせの後に、ログが最下位行以下に追加されるように表示される。
もちろん EmEditor でも同様な設定が可能なので、使っている方にはお勧めする。
- 参考ページ
httpd.log ファイルに記録される内容についいて知りたいときは鷹の巣さんの以下のページがを参考になるかと思います。
WWWサーバのHTTP ログファイルの読み方
errors.log ファイルに記録される Winsock エラーについては Winsock Error Code が参考になるかと思います。
ログ解析は大抵のソフトが使えると思うが、私は Analog に満足していてその他のソフトは使ったことがない。Analog は英語のソフトであるが、多国語対応しているので解析結果を日本語で表示できる。日本 Analog ユーザ会 のページも参考になるだろう。
referer.log や ua.log も Analog の analog.cfg ファイルでログフォーマット行(LOGFORMAT)を記述すれば解析される。例えば referer.log ファイルなら、
LOGFORMAT (%j %M %d %h:%n:%j %Y %f -> %*r)
とすればいいだろう。
Analog による AN HTTPDのログ解析方法をまとめたので参考に。