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.