지속적으로 업데이트되고 회선을 계속 사용하는 로그 파일을 수신하려고합니다. 내가 듣는 파일이 여러 개 있습니다. 로그는 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,
다음과 같은 코드를 사용하여 같은 시간에 각 파일의 라인을 인쇄 할 수 있습니다
http://stackoverflow.com/documentation/python/544/multithreading#t=201607261842139282503 –
어쩌면 원하는 각 파일에 대한 스레드를 만들고 대상 함수로 정의한 follow() 함수를 설정하는 것입니다. – theVoid
@ Rawing이 상황을 내 상황에 적용하려고 시도했지만 잘 이해하지 못했습니다. 하지만 고마워. – davis