私は常に更新され、継続的に行を処理するログファイルを聴きようとしています。 事は、私は複数のファイルを聞くことです。ログはjbossインスタンスで区切られており、データベースにそれらを挿入するためにはすべて一緒に作業する必要があります。複数のファイルをリアルタイムで読み込む?
質問5419888からファイルを連続して読み込む方法の良い例がありますが、このコードは1つのファイルのみを時間で読み込みます。私はそれらをすべて読むために次のコードを試しましたが、ファイルの配列内で最初に見つかったファイルだけを聴いています。
これを使用して、同時にすべてのファイルを処理する方法を教えてください。
import time
from glob import glob
def follow(thefile):
thefile.seek(0,2)
while True:
line = thefile.readline()
if not line:
time.sleep(0.1)
continue
yield line
if __name__ == '__main__':
for log in glob("/logs/xxx/production/jboss/yyy*/xxx-production-zzzz*/xxx-production-zzzz*-xxx-Metrics.log"):
logfile = open(log, "r")
loglines = follow(logfile)
for line in loglines:
print line,
http://stackoverflow.com/documentation/python/544/multithreading#t=201607261842139282503 –
おそらくあなたが望むのは、各ファイルのスレッドを作成し、定義したfollow()関数をターゲット関数として設定することです。 – theVoid
@Rawing私はこれを自分の状況に適用しようとしましたが、それをとてもうまく理解できませんでした。しかし、ありがとう。 – davis