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.