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 結構產生這些欄位。

欄位 顯示為 Description HTTP_LOG_FIELDS_DATA成員 HTTP_LOG_FIELDS常數
日期 date 活動發生的日期。 產生的 HTTP 伺服器 API。 HTTP_LOG_FIELD_DATE
時間 time 時間,以協調的通用時間 (UTC) 發生活動。 產生的 HTTP 伺服器 API。 HTTP_LOG_FIELD_TIME
服務名稱和實例編號 s-sitename 在用戶端上執行的網際網路服務名稱和實例編號。 ServiceName HTTP_LOG_FIELD_SITE_NAME
Server 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 存取伺服器之已驗證使用者的名稱。 匿名使用者會以連字號表示。 使用者名稱 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
Cookie cs (Cookie) 如果有任何內容,則傳送或接收的 Cookie 內容。 Cookie HTTP_LOG_FIELD_COOKIE
Referrer cs (參考者) 使用者上次流覽的網站。 這個網站提供目前網站的連結。 Referrer 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 會以第一個要求開啟記錄檔。