Partager via


Journalisation W3C

La journalisation étendue W3C est le type de journalisation côté serveur qui peut être activée sur la session de serveur ou le groupe d’URL. Lorsque la journalisation W3C est activée sur un groupe d’URL, la journalisation est effectuée uniquement sur les requêtes routées vers le groupe d’URL. Un fichier journal distinct est créé pour chaque groupe d’URL configuré pour activer la journalisation W3C.

Lorsque la journalisation W3C est activée sur la session serveur, elle fonctionne comme une forme centralisée de journalisation pour tous les groupes d’URL sous la session serveur. Un seul fichier journal est conservé pour tous les groupes d’URL dans la session de serveur.

Le tableau suivant répertorie les champs qui peuvent être enregistrés par l’API serveur HTTP. La table contient un sous-ensemble des constantes HTTP_LOG_FIELD. Certains des champs répertoriés ci-dessous sont générés automatiquement par l’API serveur HTTP en interne et ne sont donc pas contenus dans la structure HTTP_LOG_FIELDS_DATA. La colonne « Apparaît sous » contient le texte qui apparaît dans le fichier journal. Les données de la table sont dans l’ordre d’occurrence dans l’enregistrement du fichier journal.

Les champs qui ne sont pas marqués « API serveur HTTP générée » doivent être transmis dans HTTP_LOG_FIELDS_DATA structure par application. L’application peut générer ces champs à partir de la structure HTTP_REQUEST passée à celle-ci.

Champ Apparaît en tant que Description membre HTTP_LOG_FIELDS_DATA constantes HTTP_LOG_FIELDS
Date date Date à laquelle l’activité s’est produite. API serveur HTTP générée. HTTP_LOG_FIELD_DATE
Heure Heure Heure, en temps universel coordonné (UTC), à laquelle l’activité s’est produite. API serveur HTTP générée. HTTP_LOG_FIELD_TIME
Nom du service et numéro d’instance s-sitename Nom du service Internet et numéro d’instance exécutés sur le client. ServiceName HTTP_LOG_FIELD_SITE_NAME
Nom du serveur s-computername Nom du serveur sur lequel l’entrée du fichier journal a été générée. Nom_serveur HTTP_LOG_FIELD_COMPUTER_NAME
Adresse IP du serveur s-ip Adresse IP du serveur sur lequel l’entrée du fichier journal a été générée. ServerIp HTTP_LOG_FIELD_SERVER_IP
Méthode cs-method Verbe demandé, par exemple, une méthode GET. Méthode HTTP_LOG_FIELD_METHOD
Tige d’URI cs-uri-stem Cible du verbe, par exemple, Default.htm. UriStem HTTP_LOG_FIELD_URI_STEM
Requête URI cs-uri-query Requête, le cas échéant, que le client essayait d’effectuer. Une requête URI (Universal Resource Identifier) est nécessaire uniquement pour les pages dynamiques. UriQuery HTTP_LOG_FIELD_URI_QUERY
Port du serveur s-port Numéro de port du serveur configuré pour le service. ServerPort HTTP_LOG_FIELD_SERVER_PORT
Nom d’utilisateur cs-username Nom de l’utilisateur authentifié qui a accédé au serveur. Les utilisateurs anonymes sont indiqués par un trait d’union. Nom d’utilisateur HTTP_LOG_FIELD_USER_NAME
Adresse IP du client c-ip Adresse IP du client qui a effectué la requête. ClientIp HTTP_LOG_FIELD_CLIENT_IP
Version du protocole cs-version Version du protocole HTTP utilisée par le client. API serveur HTTP générée. HTTP_LOG_FIELD_VERSION
Agent utilisateur cs(User-Agent) Type de navigateur utilisé par le client. UserAgent HTTP_LOG_FIELD_USER_AGENT
Biscuit cs(Cookie) Contenu du cookie envoyé ou reçu, le cas échéant. Biscuit HTTP_LOG_FIELD_COOKIE
Referrer cs(Référent) Site que l’utilisateur a visité pour la dernière fois. Ce site a fourni un lien vers le site actuel. Referrer HTTP_LOG_FIELD_REFERRER
Hôte cs-host Nom de l’en-tête de l’hôte, le cas échéant. Hôte HTTP_LOG_FIELD_HOST
État HTTP sc-status Code d’état HTTP. ProtocolStatus HTTP_LOG_FIELD_STATUS
Sous-état de protocole sc-substatus Code d’erreur de sous-état. Sous-État HTTP_LOG_FIELD_SUB_STATUS
État Win32 sc-win32-status Code d’état Windows. Win32Status HTTP_LOG_FIELD_WIN32_STATUS
Octets envoyés sc-bytes Nombre d’octets envoyés par le serveur. API serveur HTTP générée. HTTP_LOG_FIELD_BYTES_SENT
Octets reçus cs-bytes Nombre d’octets reçus et traités par le serveur. API serveur HTTP générée. HTTP_LOG_FIELD_BYTES_RECV
Temps nécessaire temps nécessaire Durée pendant laquelle l’action a pris, en millisecondes. API serveur HTTP générée. HTTP_LOG_FIELD_TIME_TAKEN
ID de flux streamid ID de flux. API serveur HTTP générée. HTTP_LOG_FIELD_STREAM_ID

 

Le fichier journal est un format texte ASCII personnalisable. Les préfixes de champ dans le fichier sont définis comme suit :

Préfixe Description
s Actions du serveur.
c Actions du client.
Sc Actions serveur à client.
Cs Actions client à serveur.

 

L’application peut sélectionner un ou plusieurs des champs de fichier journal étendu W3C. Toutefois, tous les champs ne contiennent pas d’informations. Pour les champs sélectionnés, mais pour lesquels aucune information n’est présente, un trait d’union (-) apparaît en tant qu’espace réservé. Si un champ contient un caractère non imprimable, l’API serveur HTTP la remplace par un signe plus (+) pour conserver le format du fichier journal. Cela se produit généralement avec des attaques par virus, lorsque, par exemple, un utilisateur malveillant envoie des retours chariot et des flux de ligne qui, s’ils ne sont pas remplacés par le signe plus (+), interrompent le format du fichier journal. Les champs sont séparés par des espaces.

Si un champ est activé par le groupe d’URL ou la session de serveur, mais qu’il n’est pas sélectionné pour la demande, il apparaît dans le fichier journal avec un trait d’union (-) en tant qu’espace réservé.

Les fichiers journaux sont créés lorsque la première requête arrive sur le groupe d’URL ou la session du serveur, elles ne sont pas créées lors de la configuration de la journalisation. L’exemple suivant montre la première entrée de fichier journal pour un fichier journal W3C avec les champs Client IP, Username, Server IP, Server Port, Method, URI Stem, URI Query, Status et User Agent activés :

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

Le champ de temps nécessaire est initialisé lorsque l’API du serveur HTTP reçoit le premier octet avant l’analyse de la requête. L’horodatage nécessaire est arrêté lorsque la dernière fin de l’envoi se produit. Le temps nécessaire ne reflète pas le temps sur le réseau. La première requête adressée au site affiche un temps légèrement plus long que d’autres requêtes similaires, car l’API du serveur HTTP ouvre le fichier journal avec la première requête.