Regarder/lire une croissance fichier journal
J'ai un fichier journal qui est en constante augmentation. Comment puis-je regarder et analyser via un script Ruby?
Le script va analyser chaque nouvelle ligne comme il est écrit dans le fichier de sortie et quelque chose à l'écran lorsque la nouvelle ligne contient la chaîne "ERREUR"
Vous devez vous connecter pour publier un commentaire.
Merci pour le ezpz de l'idée, à l'aide de la méthode de sélection que vous obtenez ce que vous voulez.
La méthode de sélection est à l'écoute de l'IO de flux, de lire les octets d'où vient le "tard".
select
retourne toujours immédiatement lorsqu'il est utilisé sur un flux de fichier: Vous pouvez toujours lire les expressions du FOLKLORE à partir de ce fichier de flux, de sorte que votre ruby processus finit par filer pendant qu'il attend pour le fichier de mise à jour. Les différents systèmes d'exploitation ont tendance à offrir des outils différents pour l'attente sur les fichiers, Linux a inotify et OS X a fsevents - il y a de pratique gems ruby, que de les emballer trop.if line=~pattern
il continue juste retour des lignes vides même si il n'y a pas de nouvelle mise à jour. Je ne suis pas sûr de la façon de corriger moi-même, comme je viens de tombé sur ce problème.Vous pouvez utiliser
Kernel#select
de la manière suivante:Puis l'appeler comme:
J'ai ramené tous les contrôle d'erreur et de tel, vous voulez avoir que et probablement un mécanisme pour sortir de la boucle. Mais l'idée de base est là.
Il y a deux approche:
sleep
à l'intérieur de la boucle infinie)Voici un article que j'ai écrit à ce sujet: Ruby pour les Admins: Lecture de Fichiers Croissants. Ainsi, le programme combinant à la fois le système et les bureaux de ressemble à ceci:
Si vous êtes sur Linux...
Sauf si vous voulais vraiment que ce soit un script Ruby pour une raison quelconque.
découvrez fichier-queue gem
Pauvre homme à l'approche de pliage rapide:
un script Ruby qui ne
Exécution d'écran:
De travail sur l'idée de @Qianjigui mais de ne pas utiliser 100% du CPU: