DossierRisque : Prudence
logs\LogFiles C:\inetpub\logs\LogFiles
Emplacement par défaut des journaux d'accès IIS (un sous-dossier par site, fichiers .log datés) ; à purger ou archiver régulièrement.
À quoi ça sert
IIS y écrit ses journaux de requêtes : %SystemDrive%\inetpub\logs\LogFiles est le répertoire par défaut de la journalisation. Il apparaît dès qu’IIS est installé, sur Windows Server comme sur un poste client où la fonctionnalité est activée.
Ce qu’il contient
- Un sous-dossier par site :
W3SVC<identifiant du site>(par exempleW3SVC1) etFTPSVC<identifiant>pour les sites FTP. - Des fichiers
.logau format W3C étendu (u_ex<aammjj>.log), découpés selon la période choisie : horaire, quotidienne, hebdomadaire ou mensuelle. - Pour chaque requête : date, heure, adresse du client, méthode, URI, code de statut, durée. Les horodatages du format W3C sont en UTC, d’où un décalage avec l’heure locale du serveur.
- Pas les erreurs HTTP.sys (
HTTPERR), qui sont dansC:\Windows\System32\LogFiles.
Risques et bonnes pratiques
- IIS ne purge jamais ces journaux : sur un serveur chargé, le volume système finit par se remplir. Planifiez la suppression au-delà d’un âge donné (Microsoft en documente un script) en gardant la durée que votre politique de sécurité ou la réglementation exige.
- Déplacez le répertoire vers un autre volume depuis IIS (site > Journalisation > Répertoire) plutôt que de remplacer le dossier.
- Ne supprimez pas le fichier du jour : le service le tient ouvert.
- Pour analyser de gros volumes, utilisez Log Parser ou un outil de supervision plutôt que le Bloc-notes.
Commandes utiles
# Identifiants et noms des sites, donc le dossier W3SVC<id> correspondant& "$env:windir\system32\inetsrv\appcmd.exe" list site
# Volume des journaux, par dossier de siteGet-ChildItem "$env:SystemDrive\inetpub\logs\LogFiles" -Directory | ForEach-Object { [pscustomobject]@{ Site = $_.Name; Mo = [math]::Round((Get-ChildItem $_.FullName -Recurse -File | Measure-Object Length -Sum).Sum / 1MB, 1) } }
# Dernières lignes du journal d'un siteGet-ChildItem "$env:SystemDrive\inetpub\logs\LogFiles\W3SVC1" -Filter *.log | Sort-Object LastWriteTime | Select-Object -Last 1 | Get-Content -Tail 20
# Suppression des journaux de plus de 30 jours (en administrateur ; retirer -WhatIf pour exécuter)Get-ChildItem "$env:SystemDrive\inetpub\logs\LogFiles" -Recurse -Filter *.log | Where-Object LastWriteTime -lt (Get-Date).AddDays(-30) | Remove-Item -WhatIf