Surveiller les fichiers journaux Windows en temps réel avec PowerShell

/fr/images/colourful-logs-from-powershell-output-highlight-e.png

Certaines applications ou services Windows n’utilisent pas les journaux binaires de l’Observateur d’événements ( *.evtx ) pour stocker leurs journaux, mais les enregistrent plutôt sous forme de fichiers journaux en texte brut. Lors du dépannage de certains problèmes, il peut être utile d’afficher le contenu du fichier journal à l’écran en temps réel avec des mises à jour automatiques à mesure que de nouvelles lignes sont ajoutées au journal. Sous Linux, la commande tail est généralement utilisée pour afficher le contenu d’un fichier journal à l’écran et le mettre à jour en temps réel. Pour la surveillance des journaux en direct (en temps réel) sous Windows, vous pouvez utiliser l’applet de commande PowerShell Get-Content comme analogue de la commande tail.

La commande suivante affiche le contenu du fichier journal sur la console, affichant les nouvelles lignes en temps réel au fur et à mesure qu’elles sont ajoutées au journal :

Get-Content-Path "C:\LogFolder\appact.log" -Wait

/fr/images/list-log-file-and-show-new-entries-added-using-get.png.webp

Un inconvénient de la commande précédente est qu’elle affiche d’abord l’intégralité du fichier journal avant d’afficher les nouvelles lignes au fur et à mesure de leur ajout. Il est plus pratique de n’afficher à l’écran que quelques-unes des dernières entrées du journal. Par exemple, pour afficher uniquement les 10 dernières lignes d’un fichier journal et attendre que de nouvelles lignes apparaissent, ajoutez l’argument -Tail 10.

Get-Content-Path "C:\LogFolder\appact.log"-Wait-Tail 10

PowerShell permet le filtrage en temps réel des fichiers journaux pour afficher uniquement les lignes correspondant à des critères spécifiques. Par exemple, je souhaite afficher uniquement les entrées du journal du pare-feu contenant une adresse IP spécifique :

$IP="123.12.2.22"Get-Content "C:\windows\system32\LogFiles\Firewall\pfirewall.log"-Tail 40-Wait | ? { $\_-match $IP }

/fr/images/filtering-and-displaying-specific-lines-from-a-log.png.webp

PowerShell peut également être utilisé pour coloriser la sortie du contenu du fichier journal afin de le rendre plus facile à lire. Par exemple, j’aimerais que les lignes contenant le mot-clé Succès soient surlignées en vert et les lignes contenant des erreurs soient surlignées en rouge.

` Get-Content C:\Windows\System32\LogFiles\setupcln\setupact.log-Wait-Tail 50 | PourEach-Object {

switch-Regex ($_) {

“ERREUR”{ Write-Host $_-F Blanc-B Rouge }

“Succès”{ Write-Host $_-F Vert }

par défaut { Write-Host $_ }

}

} `

La sortie du fichier journal à l’écran est désormais beaucoup plus lisible.

/fr/images/colourful-logs-from-powershell-output-highlight-e.png.webp

Ainsi, PowerShell fournit un outil simple et pratique pour surveiller en temps réel les modifications des fichiers journaux. Bien entendu, PowerShell ne gère pas particulièrement bien les fichiers journaux très volumineux (plusieurs Go). Cependant, avec le paramètre -Tail , il ne lit que la fin du fichier plutôt que l’intégralité du journal. Ainsi, cette méthode de surveillance des fichiers journaux en temps réel n’entraîne pas une utilisation élevée de la mémoire.

*️⃣ Lien source :

journal du pare-feu,