Aller au contenuAller à l'arborescence
DossierRisque : Prudence

HTTPERR C:\Windows\System32\LogFiles\HTTPERR

HTTPERR\httperr<n>.log : journaux d'erreurs du pilote HTTP.sys, avec les requêtes rejetées avant d'atteindre IIS ou l'application. Utile pour les erreurs 400.

Mis à jour le Par AltF4 Formation

À quoi ça sert

HTTPERR reçoit les journaux d’erreurs de l’API de serveur HTTP, c’est-à-dire du pilote HTTP.sys qui écoute devant IIS et d’autres serveurs HTTP. Il est créé dans le dossier de journaux configuré (%SystemRoot%\System32\LogFiles par défaut), accessible aux seuls administrateurs et au compte système. On y retrouve les requêtes que le pilote refuse avant qu’elles n’atteignent le serveur web : c’est la source pour une erreur 400 qui n’apparaît pas dans les journaux IIS, ou pour des connexions coupées.

Ce qu’il contient

  • Des fichiers httperr<n>.log (httperr1.log, httperr2.log…), numérotés en séquence.
  • Du texte au format de journal W3C. La ligne #Fields donne les colonnes : date, heure, adresse et port du client, adresse et port du serveur, version HTTP, méthode, URI, code de réponse, site, motif de rejet (s-reason) et file d’attente.
  • Le motif est la colonne qui compte. Quelques valeurs fréquentes : BadRequest, Hostname, Timer_ConnectionIdle, Connection_Abandoned_By_AppPool.

Risques et bonnes pratiques

  • Un fichier est clos quand il atteint ErrorLogFileTruncateSize (1 Mo par défaut, valeur minimale) et un nouveau est ouvert : aucun nettoyage manuel n’est nécessaire.
  • Les paramètres sont sous HKLM\System\CurrentControlSet\Services\HTTP\Parameters (EnableErrorLogging, ErrorLogFileTruncateSize, ErrorLoggingDir). Ils ne sont pris en compte qu’après redémarrage du pilote (net stop http, net start http), qui interrompt les services dépendants : planifiez l’opération.
  • Les fichiers contiennent des adresses IP de clients : protégez-en les copies.

Commandes utiles

Fenêtre de terminal
# Lister les fichiers d'erreurs HTTP.sys
Get-ChildItem -Force "$env:windir\System32\LogFiles\HTTPERR" | Select-Object Name, Length, LastWriteTime
# Lire la fin du fichier le plus récent
Get-ChildItem "$env:windir\System32\LogFiles\HTTPERR\httperr*.log" | Sort-Object LastWriteTime | Select-Object -Last 1 | Get-Content -Tail 40
# Chercher un motif de rejet (par exemple Timer_ ou BadRequest)
Select-String -Path "$env:windir\System32\LogFiles\HTTPERR\httperr*.log" -Pattern "BadRequest|Timer_" | Select-Object -Last 20
# Lire la configuration de la journalisation d'erreurs de HTTP.sys
Get-ItemProperty "HKLM:\System\CurrentControlSet\Services\HTTP\Parameters" | Select-Object EnableErrorLogging, ErrorLogFileTruncateSize, ErrorLoggingDir

Signaler une erreur