W3C 記錄
W3C 擴充記錄是在伺服器會話或 URL 群組上啟用的伺服器端記錄類型。 在 URL 群組上啟用 W3C 記錄時,只會在路由至 URL 群組的要求上執行記錄。 系統會針對設定為啟用 W3C 記錄的每個 URL 群組建立個別的記錄檔。
在伺服器會話上啟用 W3C 記錄時,它會做為伺服器會話下所有 URL 群組的集中式記錄形式。 伺服器會話中所有 URL 群組都會維護單一記錄檔。
下表列出 HTTP 伺服器 API 可以記錄的欄位。 數據表包含 HTTP_LOG_FIELD 常數的子集。 下列某些欄位是由 HTTP 伺服器 API 在內部自動產生的,因此不包含在 HTTP_LOG_FIELDS_DATA 結構中。 [顯示為] 資料列包含記錄檔中顯示的文字。 數據表中的數據依記錄檔記錄中出現的順序。
未標示為「HTTP 伺服器 API 產生的」字段必須透過應用程式在 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 字幹 | 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(參考者) | 使用者上次瀏覽的網站。 此網站提供目前網站的連結。 | 引薦 | HTTP_LOG_FIELD_REFERRER |
主機 | cs-host | 如果有的話,則為主機名。 | 主機 | HTTP_LOG_FIELD_HOST |
HTTP 狀態 | sc-status | HTTP 狀態代碼。 | ProtocolStatus | HTTP_LOG_FIELD_STATUS |
通訊協議子狀態 | sc-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 |
所花費的時間 | 所花費的時間 | 動作所花費的時間長度,以毫秒為單位。 | 產生的 HTTP 伺服器 API。 | HTTP_LOG_FIELD_TIME_TAKEN |
數據流標識碼 | streamid | 數據流標識碼。 | 產生的 HTTP 伺服器 API。 | HTTP_LOG_FIELD_STREAM_ID |
記錄檔是可自定義的 ASCII 文字格式。 檔案中的欄位前置詞定義如下:
前綴 | 描述 |
---|---|
s | 伺服器動作。 |
c | 用戶端動作。 |
sc | 伺服器對客戶端動作。 |
cs | 用戶端對伺服器動作。 |
應用程式可以選取一或多個 W3C 擴充記錄檔欄位,不過,並非所有欄位都會包含資訊。 針對選取但沒有任何資訊的欄位,連字元 (-) 會顯示為佔位元。 如果欄位包含不可列印的字元,HTTP 伺服器 API 會以加號 (+) 取代它,以保留記錄檔格式。 這通常發生在病毒攻擊時,例如,惡意用戶傳送歸位字元和換行字元,如果不是以加號取代 ,則會中斷記錄檔格式。 欄位會以空格分隔。
如果 URL 群組或伺服器會話啟用欄位,但未針對要求選取,則會以連字元 (-) 作為佔位元出現在記錄檔中。
記錄檔會在第一個要求到達 URL 群組或伺服器會話時建立,記錄檔不會在設定記錄時建立。 下列範例顯示 W3C 記錄檔的第一個記錄檔專案,其中包含已啟用 [用戶端 IP]、[使用者名稱]、[伺服器 IP]、[伺服器埠]、[方法]、[URI 字幹]、[URI 查詢]、[狀態] 和 [使用者代理程式] 字段:
#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 會開啟具有第一個要求的記錄檔。