W3C-Protokollierung
Die erweiterte W3C-Protokollierung ist eine Art der serverseitigen Protokollierung, die für die Serversitzung oder URL-Gruppe aktiviert werden kann. Wenn die W3C-Protokollierung für eine URL-Gruppe aktiviert ist, wird die Protokollierung nur für Anforderungen ausgeführt, die an die URL-Gruppe weitergeleitet werden. Für jede URL-Gruppe, die für die Aktivierung der W3C-Protokollierung konfiguriert ist, wird eine separate Protokolldatei erstellt.
Wenn die W3C-Protokollierung für die Serversitzung aktiviert ist, fungiert sie als zentralisierte Protokollierung für alle URL-Gruppen unter der Serversitzung. Eine einzelne Protokolldatei wird für alle URL-Gruppen in der Serversitzung verwaltet.
In der folgenden Tabelle sind die Felder aufgeführt, die von der HTTP-Server-API protokolliert werden können. Die Tabelle enthält eine Teilmenge der HTTP_LOG_FIELD Konstanten. Einige der unten aufgeführten Felder werden intern automatisch von der HTTP-Server-API generiert und sind daher nicht in der HTTP_LOG_FIELDS_DATA-Struktur enthalten. Die Spalte "Erscheint als" enthält den Text, der in der Protokolldatei angezeigt wird. Die Daten in der Tabelle befinden sich in der Reihenfolge des Vorkommens im Protokolldateidatensatz.
Felder, die nicht als "HTTP-Server-API generiert" gekennzeichnet sind, müssen innerhalb HTTP_LOG_FIELDS_DATA Struktur nach Anwendung übergeben werden. Die Anwendung kann diese Felder aus der HTTP_REQUEST-Struktur generieren, die an sie übergeben wird.
Feld | Wird angezeigt als | BESCHREIBUNG | HTTP_LOG_FIELDS_DATA Mitglied | HTTP_LOG_FIELDS Konstanten |
---|---|---|---|---|
Datum | Datum | Das Datum, an dem die Aktivität aufgetreten ist. | HTTP-Server-API generiert. | HTTP_LOG_FIELD_DATE |
Time | time | Die Uhrzeit in koordinierter Weltzeit (UTC), zu der die Aktivität aufgetreten ist. | HTTP-Server-API generiert. | HTTP_LOG_FIELD_TIME |
Dienstname und Instanznummer | s-sitename | Der Internetdienstname und instance Nummer, die auf dem Client ausgeführt wurde. | Dienstname | HTTP_LOG_FIELD_SITE_NAME |
Servername | s-computername | Der Name des Servers, auf dem der Protokolldateieintrag generiert wurde. | ServerName | HTTP_LOG_FIELD_COMPUTER_NAME |
Server-IP-Adresse | s-ip | Die IP-Adresse des Servers, auf dem der Protokolldateieintrag generiert wurde. | ServerIp | HTTP_LOG_FIELD_SERVER_IP |
Methode | cs-method | Das angeforderte Verb, z. B. eine GET-Methode. | Methode | HTTP_LOG_FIELD_METHOD |
URI-Stamm | cs-uri-stem | Das Ziel des Verbs, z. B. Default.htm. | UriStem | HTTP_LOG_FIELD_URI_STEM |
URI-Abfrage | cs-uri-query | Die Abfrage, falls vorhanden, die der Client auszuführen versuchte. Eine Abfrage-URI (Universal Resource Identifier) ist nur für dynamische Seiten erforderlich. | UriQuery | HTTP_LOG_FIELD_URI_QUERY |
Serverport | s-Port | Die Serverportnummer, die für den Dienst konfiguriert ist. | ServerPort | HTTP_LOG_FIELD_SERVER_PORT |
Benutzername | cs-username | Der Name des authentifizierten Benutzers, der auf den Server zugegriffen hat. Anonyme Benutzer werden durch einen Bindestrich gekennzeichnet. | UserName | HTTP_LOG_FIELD_USER_NAME |
Client IP Address | c-ip | Die IP-Adresse des Clients, der die Anforderung gestellt hat. | ClientIp | HTTP_LOG_FIELD_CLIENT_IP |
Protokollversion | cs-version | Die vom Client verwendete HTTP-Protokollversion. | HTTP-Server-API generiert. | HTTP_LOG_FIELD_VERSION |
Benutzer-Agent | cs(User-Agent) | Der vom Client verwendete Browsertyp | UserAgent | HTTP_LOG_FIELD_USER_AGENT |
Cookie | cs(Cookie) | Der Inhalt des gesendeten oder empfangenen Cookies, falls vorhanden. | Cookie | HTTP_LOG_FIELD_COOKIE |
Referrer | cs(Referrer) | Die Website, die der Benutzer zuletzt besucht hat. Diese Website stellte eine Verknüpfung zur aktuellen Website her. | Referrer | HTTP_LOG_FIELD_REFERRER |
Host | cs-host | Der Name des Hostheaders, falls vorhanden. | Host | HTTP_LOG_FIELD_HOST |
HTTP-Status | sc-status | Der HTTP-Statuscode. | ProtocolStatus | HTTP_LOG_FIELD_STATUS |
Protokollunterstatus | sc-substatus | Der Unterstatusfehlercode. | SubStatus | HTTP_LOG_FIELD_SUB_STATUS |
Win32-Status | sc-win32-status | Der Windows-status-Code. | Win32Status | HTTP_LOG_FIELD_WIN32_STATUS |
Gesendete Bytes | sc-bytes | Die Anzahl der vom Server gesendeten Bytes. | HTTP-Server-API generiert. | HTTP_LOG_FIELD_BYTES_SENT |
Empfangene Bytes | cs-bytes | Die Anzahl der vom Server empfangenen und verarbeiteten Bytes. | HTTP-Server-API generiert. | HTTP_LOG_FIELD_BYTES_RECV |
Benötigte Zeit | Zeitaufwand | Die Dauer der Aktion in Millisekunden. | HTTP-Server-API generiert. | HTTP_LOG_FIELD_TIME_TAKEN |
Stream-ID | streamid | Die Stream-ID. | HTTP-Server-API generiert. | HTTP_LOG_FIELD_STREAM_ID |
Die Protokolldatei ist ein anpassbares ASCII-textbasiertes Format. Die Feldpräfixe in der Datei werden wie folgt definiert:
Präfix | BESCHREIBUNG |
---|---|
s | Serveraktionen. |
c | Clientaktionen. |
Sc | Server-zu-Client-Aktionen. |
cs | Client-zu-Server-Aktionen. |
Die Anwendung kann mindestens eins der Felder der erweiterten W3C-Protokolldatei auswählen, aber nicht alle Felder enthalten Informationen. Für Felder, die ausgewählt sind, für die jedoch keine Informationen vorhanden sind, wird ein Bindestrich (-) als Platzhalter angezeigt. Wenn ein Feld ein nicht druckbares Zeichen enthält, ersetzt es die HTTP-Server-API durch ein Pluszeichen (+), um das Protokolldateiformat beizubehalten. Dies tritt in der Regel bei Virenangriffen auf, wenn z. B. ein böswilliger Benutzer Wagenrückläufe und Zeilenfeeds sendet, die das Protokolldateiformat unterbrechen würden, wenn sie nicht durch das Pluszeichen (+) ersetzt werden. Felder werden durch Leerzeichen getrennt.
Wenn ein Feld von der URL-Gruppe oder Serversitzung aktiviert, aber nicht für die Anforderung ausgewählt wird, wird es in der Protokolldatei mit einem Bindestrich (-) als Platzhalter angezeigt.
Protokolldateien werden erstellt, wenn die erste Anforderung in der URL-Gruppe oder Serversitzung eingeht. Sie werden nicht erstellt, wenn die Protokollierung konfiguriert ist. Das folgende Beispiel zeigt den ersten Protokolldateieintrag für eine W3C-Protokolldatei mit aktivierten Feldern Client-IP, Benutzername, Server-IP, Serverport, Methode, URI-Stamm, URI-Abfrage, Status und Benutzer-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)
Das zeitbezogene Feld wird initialisiert, wenn die HTTP-Server-API das erste Byte empfängt, bevor die Anforderung analysiert wird. Der Zeitstempel wird beendet, wenn der letzte Sendeabschluss erfolgt. Die benötigte Zeit spiegelt nicht die Zeit im gesamten Netzwerk wider. Die erste Anforderung an die Website zeigt eine etwas längere Zeit als andere ähnliche Anforderungen, da die HTTP-Server-API die Protokolldatei mit der ersten Anforderung öffnet.