簡體   English   中英

實時讀取多個文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM