Python でログ ファイルを効率的に追跡するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-11 06:38:03
オリジナル
207 人が閲覧しました

How Can I Efficiently Tail Log Files in Python?

Python でのログ ファイルのテーリング: 最新のアプローチ

概要

ログ ファイルのテーリングとはシステム管理における一般的なタスク。 Python では、ノンブロッキングな方法でログ ファイル出力にアクセスできる機能は、リアルタイムの監視やデータ分析に特に役立ちます。

ノンブロッキング テーリング

ノンブロッキングテーリングの場合、サブプロセスモジュールと選択モジュールを組み合わせることができます。このアプローチでは、子プロセスを使用して tail コマンドを実行し、メイン プロセスは新しいデータの子の出力をポーリングします。

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)
ログイン後にコピー

このコード スニペットでは、tail コマンドはノンブロッキングで実行され、メイン プロセスが許可されます。プロセスの実行を継続します。 select モジュールは、新しいデータの出力パイプをポーリングするために使用され、データが利用可能になると、そのデータが出力されます。

ブロック テーリング

ブロック テーリングの場合、サブプロセスmodule は select モジュールなしで使用できます。このアプローチでは、末尾プログラムが終了するか強制終了されるまで、メイン プロセスがブロックされます。

import subprocess

f = subprocess.Popen(['tail', '-F', filename],
                       stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while True:
    line = f.stdout.readline()
    print(line)
ログイン後にコピー

このコード スニペットでは、末尾コマンドがブロックされて実行され、末尾プログラムが完了するまでメイン プロセスが実行されなくなります。

結論

これらのアプローチでは、目的の動作に基づいて Python でログ ファイルを追跡するためのさまざまなオプションが提供されます。ノンブロッキング アプローチはリアルタイム監視に適していますが、ブロッキング アプローチはメイン プロセスが末尾プログラムの完了を待機する従来のシナリオに使用できます。

以上がPython でログ ファイルを効率的に追跡するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート