Comment puis-je suivre efficacement les fichiers journaux en Python ?

Linda Hamilton
Libérer: 2024-11-11 06:38:03
original
207 Les gens l'ont consulté

How Can I Efficiently Tail Log Files in Python?

Fichiers journaux de queue en Python : une approche moderne

Introduction

Les fichiers journaux de queue sont une tâche courante dans l’administration système. En Python, la possibilité d'accéder à la sortie du fichier journal de manière non bloquante est particulièrement utile pour la surveillance et l'analyse des données en temps réel.

Suivi non bloquant

Pour une queue non bloquante, les modules de sous-processus et de sélection peuvent être combinés. Cette approche utilise un processus enfant pour exécuter la commande tail, tandis que le processus principal interroge la sortie de l'enfant pour de nouvelles données.

import time
import subprocess
import select

f = subprocess.Popen(['tail', '-F', filename],
                       stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p = select.poll()
p.register(f.stdout)

while True:
    if p.poll(1):
        print(f.stdout.readline())
    time.sleep(1)
Copier après la connexion

Dans cet extrait de code, la commande tail est exécutée de manière non bloquante, permettant au principal processus pour continuer à s’exécuter. Le module de sélection est utilisé pour interroger le canal de sortie à la recherche de nouvelles données, et lorsque les données deviennent disponibles, elles sont imprimées.

Blocage de la queue

Pour bloquer la queue, le sous-processus Le module peut être utilisé sans le module de sélection. Cette approche bloque le processus principal jusqu'à ce que le programme tail se termine ou soit tué.

import subprocess

f = subprocess.Popen(['tail', '-F', filename],
                       stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while True:
    line = f.stdout.readline()
    print(line)
Copier après la connexion

Dans cet extrait de code, la commande tail est exécutée en blocage, empêchant le processus principal de s'exécuter jusqu'à la fin du programme tail.

Conclusion

Ces approches fournissent différentes options pour suivre les fichiers journaux en Python en fonction du comportement souhaité. L'approche non bloquante convient à la surveillance en temps réel, tandis que l'approche bloquante peut être utilisée pour des scénarios plus traditionnels dans lesquels le processus principal attend la fin du programme final.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal