- C:
- inetpub
- logs\LogFiles
- W3SVC1
- u_ex*.log
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.
À 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-Forderrière un reverse proxy, sinonc-ipmontre le proxy) dans la Journalisation, Sélectionner les champs. - Les en-têtes
#Fieldschangent si vous modifiez les champs en cours de journée : un nouvel en-tête apparaît dans le même fichier.
Commandes utiles
# 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 1Get-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.