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 サイトの他の関連記事を参照してください。