Protokolování W3C
Rozšířené protokolování W3C je typ protokolování na straně serveru, které lze povolit v relaci serveru nebo skupině adres URL. Pokud je ve skupině adres URL povolené protokolování W3C, protokolování se provádí pouze u požadavků směrovaných do skupiny adres URL. Pro každou skupinu adres URL nakonfigurovanou pro povolení protokolování W3C se vytvoří samostatný soubor protokolu.
Pokud je protokolování W3C povolené v relaci serveru, funguje jako centralizovaná forma protokolování pro všechny skupiny adres URL v rámci relace serveru. Jeden soubor protokolu se udržuje pro všechny skupiny adres URL v relaci serveru.
V následující tabulce jsou uvedena pole, která lze protokolovat pomocí rozhraní API serveru HTTP. Tabulka obsahuje podmnožinu konstant HTTP_LOG_FIELD. Některá z níže uvedených polí jsou automaticky generována rozhraním API HTTP Serveru interně, a proto nejsou obsažena ve struktuře HTTP_LOG_FIELDS_DATA. Sloupec "Vypadá jako" obsahuje text, který se zobrazí v souboru protokolu. Data v tabulce jsou v pořadí výskytu v záznamu souboru protokolu.
Pole, která nejsou označená jako "vygenerované rozhraní API serveru HTTP", musí být předána uvnitř struktury HTTP_LOG_FIELDS_DATA aplikací. Aplikace může tato pole vygenerovat ze struktury HTTP_REQUEST, která jí byla předána.
Pole | Zobrazí se jako | Popis | HTTP_LOG_FIELDS_DATA člen | konstanty HTTP_LOG_FIELDS |
---|---|---|---|---|
Rande | rande | Datum, kdy došlo k aktivitě. | Vygenerovalo se rozhraní API serveru HTTP. | HTTP_LOG_FIELD_DATE |
Čas | Čas | Čas v koordinovaném univerzálním čase (UTC), kdy došlo k aktivitě. | Vygenerovalo se rozhraní API serveru HTTP. | HTTP_LOG_FIELD_TIME |
Název služby a číslo instance | s-sitename | Název internetové služby a číslo instance spuštěné v klientovi. | Název služby | HTTP_LOG_FIELD_SITE_NAME |
Název serveru | s-computername | Název serveru, na kterém byla vygenerována položka souboru protokolu. | Název serveru | HTTP_LOG_FIELD_COMPUTER_NAME |
IP adresa serveru | s-ip | IP adresa serveru, na kterém byla vygenerována položka souboru protokolu. | ServerIp | HTTP_LOG_FIELD_SERVER_IP |
Metoda | cs-method | Požadovaný příkaz, například metodu GET. | Metoda | HTTP_LOG_FIELD_METHOD |
URI Stem | cs-uri-stem | Cíl příkazu, například Default.htm. | UriStem | HTTP_LOG_FIELD_URI_STEM |
Dotaz URI | cs-uri-query | Dotaz, pokud existuje, že se klient pokusil provést. Dotaz identifikátoru URI (Universal Resource Identifier) je nezbytný pouze pro dynamické stránky. | UriQuery | HTTP_LOG_FIELD_URI_QUERY |
Port serveru | s-port | Číslo portu serveru, které je nakonfigurované pro službu. | ServerPort | HTTP_LOG_FIELD_SERVER_PORT |
Uživatelské jméno | cs-username | Jméno ověřeného uživatele, který k serveru přistupoval. Anonymní uživatelé jsou označeni pomlčkou. | Uživatelské jméno | HTTP_LOG_FIELD_USER_NAME |
IP adresa klienta | c-ip | IP adresa klienta, který požadavek provedl. | ClientIp | HTTP_LOG_FIELD_CLIENT_IP |
Verze protokolu | cs-version | Verze protokolu HTTP, kterou klient použil. | Vygenerovalo se rozhraní API serveru HTTP. | HTTP_LOG_FIELD_VERSION |
Uživatelský agent | cs(User-Agent) | Typ prohlížeče, který klient použil. | UserAgent | HTTP_LOG_FIELD_USER_AGENT |
Sušenka | cs(Cookie) | Obsah souboru cookie byl odeslán nebo přijat, pokud existuje. | Sušenka | HTTP_LOG_FIELD_COOKIE |
Referrer | cs(Referrer) | Web, který uživatel naposledy navštívil. Tento web poskytl odkaz na aktuální web. | Referrer | HTTP_LOG_FIELD_REFERRER |
Hostitel | cs-host | Název hlavičky hostitele, pokud existuje. | Hostitel | HTTP_LOG_FIELD_HOST |
Stav HTTP | Sc-status | Stavový kód HTTP. | ProtocolStatus | HTTP_LOG_FIELD_STATUS |
Podstatus protokolu | Sc-substatus | Kód chyby dílčího statistiky. | Dílčí statistika | HTTP_LOG_FIELD_SUB_STATUS |
Stav Win32 | sc-win32-status | Stavový kód Windows. | Win32Status | HTTP_LOG_FIELD_WIN32_STATUS |
Odeslané bajty | Sc-bytes | Počet bajtů odeslaných serverem | Vygenerovalo se rozhraní API serveru HTTP. | HTTP_LOG_FIELD_BYTES_SENT |
Přijaté bajty | cs-bytes | Počet bajtů přijatých a zpracovaných serverem | Vygenerovalo se rozhraní API serveru HTTP. | HTTP_LOG_FIELD_BYTES_RECV |
Čas potřebný k tomu | doba trvání | Doba trvání akce v milisekundách. | Vygenerovalo se rozhraní API serveru HTTP. | HTTP_LOG_FIELD_TIME_TAKEN |
ID streamu | streamid | ID streamu. | Vygenerovalo se rozhraní API serveru HTTP. | HTTP_LOG_FIELD_STREAM_ID |
Soubor protokolu je přizpůsobitelný textový formát ASCII. Předpony polí v souboru jsou definovány takto:
Předpona | Popis |
---|---|
s | Akce serveru. |
c | Akce klienta. |
Sc | Akce mezi servery |
Cs | Akce typu klient-server |
Aplikace může vybrat jedno nebo více polí souboru protokolu W3C Extended, ale ne všechna pole budou obsahovat informace. U polí, která jsou vybraná, ale pro která nejsou žádné informace, se jako zástupný symbol zobrazí spojovník (-). Pokud pole obsahuje netisknutelný znak, rozhraní API serveru HTTP ho nahradí znaménkem plus (+), aby se zachoval formát souboru protokolu. K tomu obvykle dochází u virových útoků, když například škodlivý uživatel odesílá návraty na začátek řádku a řádkové kanály, které , pokud není nahrazeno znaménkem plus (+), by přerušilo formát souboru protokolu. Pole jsou oddělená mezerami.
Pokud je pole povolené skupinou adres URL nebo relací serveru, ale není vybráno pro požadavek, zobrazí se v souboru protokolu se spojovníkem (-) jako zástupný symbol.
Soubory protokolu se vytvoří při příchodu prvního požadavku do relace skupiny adres URL nebo serveru, které se při konfiguraci protokolování nevytvořily. Následující příklad ukazuje první položku souboru protokolu pro soubor protokolu W3C s povolenými poli Ip adresa klienta, uživatelské jméno, SERVER IP, port serveru, metoda, identifikátor URI, dotaz URI, stav a uživatelský agent:
#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)
Časové pole se inicializuje, když rozhraní API serveru HTTP obdrží první bajt před parsováním požadavku. Časové razítko se zastaví, když dojde k dokončení posledního odeslání. Doba potřebná pro celou síť neodráží čas. První požadavek na web ukazuje o něco delší dobu, než jsou jiné podobné požadavky, protože rozhraní API serveru HTTP otevře soubor protokolu s prvním požadavkem.