Rejestrowanie W3C
Rozszerzone rejestrowanie W3C to typ rejestrowania po stronie serwera, które można włączyć w sesji serwera lub grupie adresów URL. Po włączeniu rejestrowania W3C w grupie adresów URL rejestrowanie jest wykonywane tylko na żądaniach kierowanych do grupy adresów URL. Dla każdej grupy adresów URL skonfigurowanych do włączania rejestrowania W3C jest tworzony oddzielny plik dziennika.
Gdy rejestrowanie W3C jest włączone na sesji serwera, działa jako scentralizowana forma rejestrowania dla wszystkich grup adresów URL w ramach sesji serwera. Jeden plik dziennika jest utrzymywany dla wszystkich grup adresów URL w sesji serwera.
W poniższej tabeli wymieniono pola, które mogą być rejestrowane przez interfejs API serwera HTTP. Tabela zawiera podzbiór stałych HTTP_LOG_FIELD. Niektóre pola wymienione poniżej są generowane automatycznie przez interfejs API serwera HTTP wewnętrznie i dlatego nie znajdują się w strukturze HTTP_LOG_FIELDS_DATA. Kolumna "Pojawia się jako" zawiera tekst wyświetlany w pliku dziennika. Dane w tabeli są w kolejności wystąpienia w rekordzie pliku dziennika.
Pola, które nie są oznaczone jako "Wygenerowany interfejs API serwera HTTP", muszą być przekazywane wewnątrz struktury HTTP_LOG_FIELDS_DATA przez aplikację. Aplikacja może wygenerować te pola na podstawie przekazanej struktury HTTP_REQUEST.
Pole | Pojawia się jako | Opis | członek HTTP_LOG_FIELDS_DATA | HTTP_LOG_FIELDS stałe |
---|---|---|---|---|
Data | data | Data wystąpienia działania. | Wygenerowany interfejs API serwera HTTP. | HTTP_LOG_FIELD_DATE |
Godzina | Godzina | Czas, w uniwersalnym czasie koordynowanym (UTC), o którym wystąpiło działanie. | Wygenerowany interfejs API serwera HTTP. | HTTP_LOG_FIELD_TIME |
Nazwa usługi i numer wystąpienia | s-sitename | Nazwa usługi internetowej i numer wystąpienia, który był uruchomiony na kliencie. | ServiceName | HTTP_LOG_FIELD_SITE_NAME |
Nazwa serwera | s-computername | Nazwa serwera, na którym został wygenerowany wpis pliku dziennika. | Nazwa serwera | HTTP_LOG_FIELD_COMPUTER_NAME |
Adres IP serwera | s-ip | Adres IP serwera, na którym został wygenerowany wpis pliku dziennika. | ServerIp | HTTP_LOG_FIELD_SERVER_IP |
Metoda | cs-method | Żądane zlecenie, na przykład metoda GET. | Metoda | HTTP_LOG_FIELD_METHOD |
URI Stem | cs-uri-stem | Element docelowy czasownika, na przykład, Default.htm. | UriStem | HTTP_LOG_FIELD_URI_STEM |
Kwerenda identyfikatora URI | cs-uri-query | Zapytanie, jeśli istnieje, że klient próbował wykonać. Zapytanie uniwersalnego identyfikatora zasobów (URI) jest niezbędne tylko dla stron dynamicznych. | UriQuery | HTTP_LOG_FIELD_URI_QUERY |
Port serwera | s-port | Numer portu serwera skonfigurowany dla usługi. | ServerPort | HTTP_LOG_FIELD_SERVER_PORT |
Nazwa użytkownika | cs-username | Nazwa uwierzytelnionego użytkownika, który uzyskiwał dostęp do serwera. Użytkownicy anonimowi są wskazywani przez łącznik. | Nazwa użytkownika | HTTP_LOG_FIELD_USER_NAME |
Adres IP klienta | c-ip | Adres IP klienta, który złożył żądanie. | ClientIp | HTTP_LOG_FIELD_CLIENT_IP |
Wersja protokołu | cs-version | Wersja protokołu HTTP używana przez klienta. | Wygenerowany interfejs API serwera HTTP. | HTTP_LOG_FIELD_VERSION |
Agent użytkownika | cs(User-Agent) | Typ przeglądarki używany przez klienta. | UserAgent | HTTP_LOG_FIELD_USER_AGENT |
Ciasteczko | cs(Cookie) | Zawartość pliku cookie wysłanego lub odebranego, jeśli istnieje. | Ciasteczko | HTTP_LOG_FIELD_COOKIE |
Referrer | cs(Referer) | Witryna ostatnio odwiedzana przez użytkownika. Ta witryna udostępniła link do bieżącej witryny. | Referrer | HTTP_LOG_FIELD_REFERRER |
Gospodarz | cs-host | Nazwa nagłówka hosta, jeśli istnieje. | Gospodarz | HTTP_LOG_FIELD_HOST |
Stan HTTP | stan sc | Kod stanu HTTP. | ProtocolStatus | HTTP_LOG_FIELD_STATUS |
Stan podrzędny protokołu | sc-substatus | Kod błędu podstatu. | Stan podrzędny | HTTP_LOG_FIELD_SUB_STATUS |
Stan win32 | sc-win32-status | Kod stanu systemu Windows. | Win32Status | HTTP_LOG_FIELD_WIN32_STATUS |
Wysłane bajty | bajty sc-by | Liczba bajtów wysłanych przez serwer. | Wygenerowany interfejs API serwera HTTP. | HTTP_LOG_FIELD_BYTES_SENT |
Odebrane bajty | cs-bytes | Liczba bajtów odebranych i przetworzonych przez serwer. | Wygenerowany interfejs API serwera HTTP. | HTTP_LOG_FIELD_BYTES_RECV |
Czas potrzebny | czas potrzebny | Czas trwania akcji w milisekundach. | Wygenerowany interfejs API serwera HTTP. | HTTP_LOG_FIELD_TIME_TAKEN |
Identyfikator strumienia | streamid | Identyfikator strumienia. | Wygenerowany interfejs API serwera HTTP. | HTTP_LOG_FIELD_STREAM_ID |
Plik dziennika jest dostosowywalnym formatem tekstowym ASCII. Prefiksy pól w pliku są definiowane w następujący sposób:
Przedrostek | Opis |
---|---|
s | Akcje serwera. |
c | Akcje klienta. |
Sc | Akcje serwer-klient. |
Cs | Akcje klient-serwer. |
Aplikacja może wybrać jedno lub więcej pól pliku dziennika rozszerzonego W3C, jednak nie wszystkie pola będą zawierać informacje. W przypadku pól, które są zaznaczone, ale dla których nie ma żadnych informacji, łącznik (-) jest wyświetlany jako symbol zastępczy. Jeśli pole zawiera znak niedrukowalny, interfejs API serwera HTTP zastępuje go znakiem plus (+), aby zachować format pliku dziennika. Zwykle występuje to w przypadku ataków wirusowych, gdy na przykład złośliwy użytkownik wysyła zwroty karetki i kanały informacyjne, które, jeśli nie zostaną zastąpione znakiem plus (+), spowoduje przerwanie formatu pliku dziennika. Pola są oddzielone spacjami.
Jeśli pole jest włączone przez grupę adresów URL lub sesję serwera, ale nie zostało wybrane dla żądania, zostanie ono wyświetlone w pliku dziennika z łącznikiem (-) jako symbol zastępczy.
Pliki dziennika są tworzone po nadejściu pierwszego żądania do grupy adresów URL lub sesji serwera, nie są tworzone podczas konfigurowania rejestrowania. Poniższy przykład przedstawia pierwszy wpis pliku dziennika dla pliku dziennika W3C z włączonymi polami Client IP, Username, Server IP, Server Port, Method, URI Stem, URI Query, Status i User 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)
Pole czasowe jest inicjowane, gdy interfejs API serwera HTTP odbiera pierwszy bajt, zanim żądanie zostanie przeanalizowane. Znacznik czasu potrzebny na czas zostanie zatrzymany po zakończeniu ostatniego wysłania. Czas potrzebny nie odzwierciedla czasu w całej sieci. Pierwsze żądanie do lokacji pokazuje nieco dłuższy czas niż inne podobne żądania, ponieważ interfejs API serwera HTTP otwiera plik dziennika z pierwszym żądaniem.