Journalisation W3C
La journalisation étendue W3C est un type de journalisation côté serveur qui peut être activé 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 demandes 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 fichier journal unique est conservé pour tous les groupes d’URL dans la session 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 passés à l’intérieur de HTTP_LOG_FIELDS_DATA structure par application. L’application peut générer ces champs à partir de la structure HTTP_REQUEST qui lui est passée.
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 de serveur HTTP générée. | HTTP_LOG_FIELD_DATE |
Temps | time | Heure, en temps universel coordonné (UTC), à laquelle l’activité s’est produite. | API de 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 de instance qui s’exécutait sur le client. | NomService | HTTP_LOG_FIELD_SITE_NAME |
Nom du serveur | s-computername | Nom du serveur sur lequel l’entrée de fichier journal a été générée. | ServerName | HTTP_LOG_FIELD_COMPUTER_NAME |
Adresse IP du serveur | s-ip | Adresse IP du serveur sur lequel l’entrée de 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 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 |
User Name | cs-username | Nom de l’utilisateur authentifié qui a accédé au serveur. Les utilisateurs anonymes sont indiqués par un trait d'union. | UserName | HTTP_LOG_FIELD_USER_NAME |
Adresse IP du client | c-ip | Adresse IP du client à l’origine de la demande. | ClientIp | HTTP_LOG_FIELD_CLIENT_IP |
Version du protocole | cs-version | Version du protocole HTTP utilisée par le client. | API de serveur HTTP générée. | HTTP_LOG_FIELD_VERSION |
User Agent | cs(User-Agent) | Type de navigateur utilisé par le client. | UserAgent | HTTP_LOG_FIELD_USER_AGENT |
Cookie | cs(Cookie) | Contenu du cookie envoyé ou reçu, le cas échéant. | Cookie | HTTP_LOG_FIELD_COOKIE |
Referrer | cs(Referrer) | 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 |
Host | cs-host | Nom d’en-tête d’hôte, le cas échéant. | Host | 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 du sous-état. | SubStatus | HTTP_LOG_FIELD_SUB_STATUS |
Win32 Status | sc-win32-status | Code status Windows. | Win32Status | HTTP_LOG_FIELD_WIN32_STATUS |
Octets envoyés | sc-octets | Nombre d’octets envoyés par le serveur. | API de serveur HTTP générée. | HTTP_LOG_FIELD_BYTES_SENT |
Octets reçus | octets cs | Nombre d’octets reçus et traités par le serveur. | API de serveur HTTP générée. | HTTP_LOG_FIELD_BYTES_RECV |
Durée | temps nécessaire | Durée nécessaire à l’exécution de l’action, en millisecondes. | API de serveur HTTP générée. | HTTP_LOG_FIELD_TIME_TAKEN |
ID de flux | streamid | ID de flux. | API de 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 clientes. |
Sc | Actions de serveur à client. |
cs | Actions de 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 il n’existe aucune information, un trait d’union (-) s’affiche en tant qu’espace réservé. Si un champ contient un caractère non imprimable, l’API serveur HTTP le remplace par un signe plus (+) pour conserver le format du fichier journal. Cela se produit généralement avec des attaques de 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 serveur, mais qu’il n’est pas sélectionné pour la demande, il apparaît dans le fichier journal avec un trait d’union (-) comme espace réservé.
Les fichiers journaux sont créés lorsque la première requête arrive sur le groupe d’URL ou la session serveur. Ils ne sont pas créés 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 Adresse IP cliente, Nom d’utilisateur, Adresse IP du serveur, Port du serveur, Méthode, Uri Stem, Requête URI, État et Agent utilisateur 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 exécution de l’envoi se produit. Le temps pris ne reflète pas le temps sur le réseau. La première requête sur le site affiche un délai 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.