次の方法で共有


W3C ログ

W3C 拡張ログは、サーバー 側のログ記録の種類であり、サーバー セッションまたは URL グループで有効にすることができます。 URL グループで W3C ログが有効になっている場合、ログ記録は URL グループにルーティングされる要求でのみ実行されます。 W3C ログ記録を有効にするように構成された URL グループごとに、個別のログ ファイルが作成されます。

サーバー セッションで W3C ログが有効になっている場合、サーバー セッションのすべての URL グループのログ記録の一元化された形式として機能します。 サーバー セッション内のすべての URL グループに対して、1 つのログ ファイルが保持されます。

次の表に、HTTP サーバー API でログに記録できるフィールドを示します。 テーブルには、HTTP_LOG_FIELD 定数のサブセットが含まれています。 以下に示す一部のフィールドは、HTTP Server API によって内部的に自動生成されるため、HTTP_LOG_FIELDS_DATA 構造体には含まれません。 [表示形式] 列には、ログ ファイルに表示されるテキストが含まれています。 テーブル内のデータは、ログ ファイル レコード内の出現順です。

"HTTP Server API generated" とマークされていないフィールドは、アプリケーション HTTP_LOG_FIELDS_DATA 構造体内で渡す必要があります。 アプリケーションは、渡された HTTP_REQUEST 構造からこれらのフィールドを生成できます。

[次のように表示] 形容 HTTP_LOG_FIELDS_DATA メンバー HTTP_LOG_FIELDS定数
日付 日付 アクティビティが発生した日付。 HTTP サーバー API が生成されました。 HTTP_LOG_FIELD_DATE
時間 時間 アクティビティが発生した世界協定時刻 (UTC) の時刻。 HTTP サーバー API が生成されました。 HTTP_LOG_FIELD_TIME
サービス名とインスタンス番号 s-sitename クライアントで実行されていたインターネット サービス名とインスタンス番号。 ServiceName HTTP_LOG_FIELD_SITE_NAME
サーバー名 s-computername ログ ファイル エントリが生成されたサーバーの名前。 ServerName HTTP_LOG_FIELD_COMPUTER_NAME
サーバー IP アドレス s-ip ログ ファイル エントリが生成されたサーバーの IP アドレス。 ServerIp HTTP_LOG_FIELD_SERVER_IP
方式 cs-method 要求された動詞 (GET メソッドなど)。 方式 HTTP_LOG_FIELD_METHOD
URI Stem cs-uri-stem 動詞のターゲット (例: Default.htm)。 UriStem HTTP_LOG_FIELD_URI_STEM
URI クエリ cs-uri-query クライアントが実行しようとしたクエリ (存在する場合)。 ユニバーサル リソース識別子 (URI) クエリは、動的ページにのみ必要です。 UriQuery HTTP_LOG_FIELD_URI_QUERY
サーバー ポート s-port サービス用に構成されているサーバー ポート番号。 ServerPort HTTP_LOG_FIELD_SERVER_PORT
ユーザー名 cs-username サーバーにアクセスした認証済みユーザーの名前。 匿名ユーザーはハイフンで示されます。 UserName HTTP_LOG_FIELD_USER_NAME
クライアント IP アドレス c-ip 要求を行ったクライアントの IP アドレス。 ClientIp HTTP_LOG_FIELD_CLIENT_IP
プロトコル のバージョン cs-version クライアントが使用した HTTP プロトコルのバージョン。 HTTP サーバー API が生成されました。 HTTP_LOG_FIELD_VERSION
ユーザー エージェント cs(User-Agent) クライアントが使用したブラウザーの種類。 UserAgent HTTP_LOG_FIELD_USER_AGENT
クッキー cs(Cookie) 送信または受信した Cookie の内容 (存在する場合)。 クッキー HTTP_LOG_FIELD_COOKIE
リファラー cs(Referrer) ユーザーが最後にアクセスしたサイト。 このサイトは、現在のサイトへのリンクを提供しました。 リファラー HTTP_LOG_FIELD_REFERRER
ホスト cs-host ホスト ヘッダー名 (存在する場合)。 ホスト HTTP_LOG_FIELD_HOST
HTTP 状態 sc-status HTTP 状態コード。 ProtocolStatus HTTP_LOG_FIELD_STATUS
Protocol Substatus sc-substatus substatus エラー コード。 SubStatus HTTP_LOG_FIELD_SUB_STATUS
Win32 の状態 sc-win32-status Windows の状態コード。 Win32Status HTTP_LOG_FIELD_WIN32_STATUS
送信バイト数 sc-bytes サーバーによって送信されたバイト数。 HTTP サーバー API が生成されました。 HTTP_LOG_FIELD_BYTES_SENT
受信バイト数 cs-bytes サーバーによって受信および処理されたバイト数。 HTTP サーバー API が生成されました。 HTTP_LOG_FIELD_BYTES_RECV
所要時間 time-taken アクションが実行された時間の長さ (ミリ秒単位)。 HTTP サーバー API が生成されました。 HTTP_LOG_FIELD_TIME_TAKEN
ストリーム ID streamid ストリーム ID。 HTTP サーバー API が生成されました。 HTTP_LOG_FIELD_STREAM_ID

 

ログ ファイルは、カスタマイズ可能な ASCII テキスト ベースの形式です。 ファイル内のフィールド プレフィックスは次のように定義されます。

接頭辞 形容
s サーバー アクション。
c クライアント アクション。
sc サーバーからクライアントへのアクション。
cs クライアントからサーバーへのアクション。

 

アプリケーションは W3C 拡張ログ ファイル フィールドの 1 つ以上を選択できますが、すべてのフィールドに情報が含まれるわけではありません。 選択されているが情報がないフィールドの場合、ハイフン (-) がプレースホルダーとして表示されます。 フィールドに印刷できない文字が含まれている場合、HTTP Server API は、ログ ファイル形式を保持するためにプラス記号 (+) に置き換えます。 これは通常、ウイルス攻撃で発生します。たとえば、悪意のあるユーザーがキャリッジ リターンやライン フィードを送信し、プラス記号 (+) に置き換えなければログ ファイル形式が壊れる場合です。 フィールドはスペースで区切られます。

URL グループまたはサーバー セッションでフィールドが有効になっているが、要求に対して選択されていない場合、フィールドはプレースホルダーとしてハイフン (-) と共にログ ファイルに表示されます。

ログ ファイルは、最初の要求が URL グループまたはサーバー セッションに到着したときに作成されます。ログ記録の構成時には作成されません。 次の例は、クライアント IP、ユーザー名、サーバー IP、サーバー ポート、メソッド、URI Stem、URI クエリ、状態、およびユーザー エージェント フィールドが有効になっている W3C ログ ファイルの最初のログ ファイル エントリを示しています。

#Software: Microsoft HTTP Server API 2.0  
#Version: 1.0   // the log file version as it's described by "https://www.w3.org/TR/WD-logfile".
#Date: 2002-05-02 17:42:15  // when the first log file entry was recorded, which is when the entire log file was created.
#Fields: date time c-ip cs-username s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status cs(User-Agent)
2002-05-02 17:42:15 172.22.255.255 - 172.30.255.255 80 GET /images/picture.jpg - 200 Mozilla/4.0+(compatible;MSIE+5.5;+Windows+2000+Server)

要求が解析される前に、HTTP サーバー API が最初のバイトを受信すると、時間のかかったフィールドが初期化されます。 最後の送信が完了すると、時間のかかったタイムスタンプが停止します。 所要時間は、ネットワーク全体の時間を反映しません。 HTTP サーバー API が最初の要求でログ ファイルを開くので、サイトへの最初の要求には、他の同様の要求よりも少し長い時間がかかります。