私は次のことを考えました:
- 利用可能な場合はユーザー ID
- ユーザーIPアドレス
- タイムスタンプ
- 実行されたアクション
何か不足していますか?ガイドラインはありますか?
アクセスログには実にさまざまな種類があります。最も一般的なものはページ アクセス用であり、ダリウス卿が説明する形式 (通常は と呼ばれますaccess log
) を持っている場合があります。
次に、内部アクションのロギングもあります (これは通常、 と呼ばれますapplication log
)。それらの多くは低いログ レベルになります (つまり、通常は表示されませんが、一時的にオンにすることができます)。
予防策を講じないと、次のようなログが表示されます。
本番環境の問題を調査する場合、これはあまり役に立ちません。1 行おきに、同じユーザーまたは別のユーザーに属することができます。あなたは知りません。
そのようなログ行ごとに、次のような形式にするのは簡単であることがわかりました。
スレッド ID または名前は、同じユーザーがアプリに対して同時に複数の要求を行っている状況を区別できるようにするために重要です。
シーケンス ID は、ユーザーがセッションの開始以降に行ったすべての要求を内部的にカウントするカウンターです (Java では、これに AtomicInteger を使用しました)。シーケンス ID は、特定のリクエスト中に発生したすべてを調べるときに grep するのが簡単な方法であるため、便利です。スレッド ID はもちろん、完全に異なるリクエストを処理するときに再利用されるためです。複数のスレッドを使用して単一の要求を内部で処理する場合にも便利です。
少し手間をかけるだけで、このようなログ形式を使用すると、ログから 1 人のユーザーのアクションを抽出し、個々のリクエストにズームインできます。
AWStats や Webalizer などのツールの統計を収集するためにアクセス ログを使用する場合は、使用すべきガイドラインがあります。
たとえば、Combined Log Formatがあります。
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"
Apache で次のように定義されています。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
この形式は Web で一般的に使用されており、ほとんどのソフトウェアで認識されます。
W3C は、Extended Log File Formatと呼ばれる別の形式を定義しています。これは、 http ://www.w3.org/TR/WD-logfile.html で指定されています。
この形式は、たとえば IIS で使用され、AWStats で理解されます。