Registrazione W3C

La registrazione estesa W3C è un tipo di registrazione lato server che può essere abilitata nella sessione del server o nel gruppo di URL. Quando la registrazione W3C è abilitata in un gruppo di URL, la registrazione viene eseguita solo sulle richieste indirizzate al gruppo di URL. Viene creato un file di log separato per ogni gruppo di URL configurato per abilitare la registrazione W3C.

Quando la registrazione W3C è abilitata nella sessione del server, funziona come forma centralizzata di registrazione per tutti i gruppi di URL nella sessione del server. Viene mantenuto un singolo file di log per tutti i gruppi di URL nella sessione del server.

Nella tabella seguente sono elencati i campi che possono essere registrati dall'API server HTTP. La tabella contiene un subset delle costanti HTTP_LOG_FIELD . Alcuni dei campi elencati di seguito sono generati automaticamente dall'API server HTTP internamente e pertanto non sono contenuti nella struttura HTTP_LOG_FIELDS_DATA . La colonna "Appare come" contiene il testo visualizzato nel file di log. I dati nella tabella sono nell'ordine di occorrenza nel record del file di log.

I campi non contrassegnati come "API server HTTP generata" devono essere passati all'interno della struttura HTTP_LOG_FIELDS_DATA dall'applicazione. L'applicazione potrebbe generare tali campi dalla struttura HTTP_REQUEST passata.

Campo Viene visualizzato come Descrizione membro HTTP_LOG_FIELDS_DATA costanti HTTP_LOG_FIELDS
Data data Data in cui si è verificata l'attività. API server HTTP generata. HTTP_LOG_FIELD_DATE
Ora time Ora, in formato UTC (Coordinated Universal Time), in cui si è verificata l'attività. API server HTTP generata. HTTP_LOG_FIELD_TIME
Nome del servizio e numero di istanza s-sitename Nome del servizio Internet e numero di istanza in esecuzione nel client. ServiceName HTTP_LOG_FIELD_SITE_NAME
Nome server s-computername Nome del server in cui è stata generata la voce del file di log. ServerName HTTP_LOG_FIELD_COMPUTER_NAME
Indirizzo IP del server s-ip Indirizzo IP del server in cui è stata generata la voce del file di log. ServerIp HTTP_LOG_FIELD_SERVER_IP
Metodo cs-method Verbo richiesto, ad esempio un metodo GET. Metodo HTTP_LOG_FIELD_METHOD
Stelo URI cs-uri-stem Destinazione del verbo, ad esempio, Default.htm. UriStem HTTP_LOG_FIELD_URI_STEM
URI Query cs-uri-query La query, se presente, che il client stava tentando di eseguire. Una query URI è necessaria solo per le pagine dinamiche. UriQuery HTTP_LOG_FIELD_URI_QUERY
Porta server s-port Numero di porta del server configurato per il servizio. ServerPort HTTP_LOG_FIELD_SERVER_PORT
Nome utente cs-username Nome dell'utente autenticato che ha eseguito l'accesso al server. Gli utenti anonimi sono indicati da un trattino. UserName HTTP_LOG_FIELD_USER_NAME
Indirizzo IP client c-ip Indirizzo IP del client che ha eseguito la richiesta. ClientIp HTTP_LOG_FIELD_CLIENT_IP
Versione del protocollo cs-version Versione del protocollo HTTP usata dal client. API server HTTP generata. HTTP_LOG_FIELD_VERSION
Agente utente cs(User-Agent) Tipo di browser usato dal client. UserAgent HTTP_LOG_FIELD_USER_AGENT
Cookie cs(Cookie) Contenuto del cookie inviato o ricevuto, se presente. Cookie HTTP_LOG_FIELD_COOKIE
Referrer cs(Referrer) Sito visitato dall'utente. Questo sito fornisce un collegamento al sito corrente. Referrer HTTP_LOG_FIELD_REFERRER
Host cs-host Nome dell'intestazione host, se presente. Host HTTP_LOG_FIELD_HOST
Stato HTTP sc-status Codice di stato HTTP. ProtocolStatus HTTP_LOG_FIELD_STATUS
Stato secondario protocollo sc-substatus Codice di errore dello stato secondario. SubStatus HTTP_LOG_FIELD_SUB_STATUS
Stato Win32 sc-win32-status Codice di stato di Windows. Win32Status HTTP_LOG_FIELD_WIN32_STATUS
Byte inviati sc-bytes Numero di byte inviati dal server. API server HTTP generata. HTTP_LOG_FIELD_BYTES_SENT
Byte ricevuti cs-bytes Numero di byte ricevuti ed elaborati dal server. API server HTTP generata. HTTP_LOG_FIELD_BYTES_RECV
Tempo impiegato tempo impiegato Durata dell'azione, in millisecondi. API server HTTP generata. HTTP_LOG_FIELD_TIME_TAKEN
ID flusso streamid ID flusso. API server HTTP generata. HTTP_LOG_FIELD_STREAM_ID

 

Il file di log è un formato personalizzabile basato su testo ASCII. I prefissi di campo nel file sono definiti come segue:

Prefisso Descrizione
s Azioni del server.
c Azioni client.
M.b Azioni da server a client.
cs Azioni da client a server.

 

L'applicazione può selezionare uno o più campi del file di log esteso W3C, ma non tutti i campi conterranno informazioni. Per i campi selezionati ma per i quali non sono presenti informazioni, un trattino (-) viene visualizzato come segnaposto. Se un campo contiene un carattere non stampabile, l'API server HTTP lo sostituisce con un segno più (+) per mantenere il formato del file di log. Ciò si verifica in genere con attacchi di virus, quando, ad esempio, un utente malintenzionato invia ritorni a capo e feed di riga che, se non sostituiti con il segno più (+), interrompe il formato del file di log. I campi sono separati da spazi.

Se un campo è abilitato dal gruppo di URL o dalla sessione del server, ma non è selezionato per la richiesta, viene visualizzato nel file di log con un trattino (-) come segnaposto.

I file di log vengono creati al momento dell'arrivo della prima richiesta nel gruppo di URL o nella sessione del server, non vengono creati quando viene configurata la registrazione. L'esempio seguente mostra la prima voce del file di log per un file di log W3C con i campi IP client, Username, Server IP, Server PORT, Method, URI Stem, URI Query, Status e User Agent abilitati:

#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)

Il campo time-taken viene inizializzato quando l'API server HTTP riceve il primo byte, prima che la richiesta venga analizzata. Il timestamp impiegato viene arrestato quando si verifica l'ultimo completamento dell'invio. Il tempo impiegato non riflette il tempo nella rete. La prima richiesta al sito mostra un tempo leggermente più lungo rispetto ad altre richieste simili perché l'API del server HTTP apre il file di log con la prima richiesta.