Aller au contenuAller à l'arborescence
JournalRisque : Sans risque

u_ex*.log C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log

u_ex*.log : journaux de requêtes IIS au format W3C étendu, un fichier u_exAAMMJJ.log par jour ; l'heure y est en UTC et les champs sont décrits par #Fields.

Mis à jour le Par AltF4 Formation

À quoi ça sert

Chaque requête traitée par le site produit une ligne dans u_ex<aammjj>.log : le * du chemin est le motif de la date, comme u_ex260312.log pour le 12 mars 2026. C’est la source pour trouver qui a demandé quoi et ce qu’IIS a répondu, mesurer des temps de réponse ou repérer des scans et des erreurs 5xx. Le « u_ex » signale le format W3C étendu avec des champs choisis par l’administrateur, par opposition aux formats IIS ou NCSA.

Format

Fichier texte en W3C étendu. Les lignes d’en-tête commencent par # : #Software, #Version, #Date et surtout #Fields, qui donne l’ordre des colonnes. Les valeurs sont séparées par une espace. Les champs par défaut sont notamment date, time, s-ip, cs-method, cs-uri-stem, cs-uri-query, s-port, cs-username, c-ip, cs(User-Agent), cs(Referer), sc-status, sc-substatus, sc-win32-status et time-taken (en millisecondes). L’heure est en UTC.

Rotation et archivage

Rotation quotidienne par défaut, réglable (horaire, taille maximale, ou pas de rotation) dans la Journalisation du site. IIS ne supprime jamais les anciens fichiers : programmez le nettoyage ou l’archivage.

Risques et bonnes pratiques

  • Le fichier du jour est verrouillé par IIS ; supprimez ou compressez seulement les jours précédents.
  • Ajoutez les champs utiles (X-Forwarded-For derrière un reverse proxy, sinon c-ip montre le proxy) dans la Journalisation, Sélectionner les champs.
  • Les en-têtes #Fields changent si vous modifiez les champs en cours de journée : un nouvel en-tête apparaît dans le même fichier.

Commandes utiles

Fenêtre de terminal
# Dernières lignes du fichier le plus récent
$f = Get-ChildItem C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log | Sort-Object LastWriteTime | Select-Object -Last 1
Get-Content $f.FullName -Tail 20
# Requêtes en erreur 5xx, avec les colonnes nommées d'après #Fields
$hdr = ((Select-String -Path $f.FullName -Pattern '^#Fields:' | Select-Object -First 1).Line -replace '^#Fields: ','') -split ' '
Get-Content $f.FullName | Where-Object { $_ -notmatch '^#' } | ConvertFrom-Csv -Delimiter ' ' -Header $hdr | Where-Object { [int]$_.'sc-status' -ge 500 } | Select-Object -First 20 date, time, 'cs-uri-stem', 'sc-status', 'time-taken'

Comment le lire

Commencez par la ligne #Fields pour connaître les colonnes. sc-status est le code HTTP, sc-substatus le sous-code IIS (404.7 par exemple), sc-win32-status le code d’erreur Windows associé (0 si tout va bien). Un time-taken élevé pointe une application lente. Pensez à convertir l’heure UTC en heure locale avant de croiser avec d’autres journaux.

Signaler une erreur