[英]Reading multiple files in real time?
我正在嘗試偵聽不斷更新的日志文件,並不斷使用這些行。 問題是我有多個文件要收聽。 日志由jboss實例分開,我必須一起處理所有日志,才能將它們插入數據庫中。
我有一個很好的示例,說明如何從問題5419888連續讀取文件,但是此代碼僅按時間讀取一個文件。 我已經嘗試了下面的代碼來全部讀取它們,但是它只偵聽在文件數組中找到的第一個文件。
我如何對它進行多線程處理以同時處理所有文件?
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,
您可以使用以下代碼同時打印每個文件的行:
lock = threading.Lock()
def printFile(logfile):
loglines = follow(logfile)
for line in loglines:
#only one thread at a time can print to the user
lock.acquire()
print line
lock.release()
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")
t = threading.Thread(target = printFile,args = (logfile,))
t.start()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.