Tail using PowerShell
07 Oct 2017| PowerShell
Envisagez un scénario dans lequel vous diagnostiquez un problème sur un serveur de production. Vous avez activé les journaux et avez tout configuré pour reproduire le problème. Mettez en file d’attente le déclencheur pour invoquer l’opération qui se comporte mal et attendez enfin que le fichier journal soit mis à jour.
Surveiller la taille du fichier journal pour qu’elle change n’est pas amusant, pas plus que rafraîchir le fichier périodiquement. Je veux être notifié au moment où le journal est mis à jour en temps réel. C’est exactement ce que fait un programme comme tail
– il surveille le fichier pour les changements et sort la queue du fichier.
Il y a quelques incarnations de queue là-bas qui font le travail parfaitement bien, mais étant donné que c’était un environnement de production, je n’étais pas gardé d’installer de nouveaux outils.
La chance, le cmdlet PowerShell Get-Content
a cette fonctionnalité intégrée. Voici la combinaison sur laquelle je me suis finalement arrêté :
Get-Content log.txt -tail 5 -wait
L’argument -tail
prend en compte le nombre de lignes à afficher à partir de la fin du fichier et -wait
spécifie qu’il doit continuer à surveiller le fichier.
C’est vrai que cette méthode n’a pas les capacités de mise en évidence qu’un outil dédié aurait, mais c’est une option assez utile à avoir en cas de pincement.
Enfin, économisez quelques frappes de touches en utilisant l’alias:
cat log.txt -tail 5 -wait
Mise à jour 2019-01-30 : J’ai récemment eu l’exigence de surveiller un fichier pour un certain texte, puis de noter l’horodatage du moment où il a été écrit. Il est basé sur cette solution suggérée.
cat .\processed-users.txt -tail 5 -wait | ? { $_ -like ‘SEARCH_STRING_HERE’ } | % { Write-Host $(Get-Date -Format T) -noNewLine -ForegroundColor Blue ; Write-Host ” $_” }