From 9bd4e7752ed07286a8e6b43f92c2820192539a5c Mon Sep 17 00:00:00 2001 From: Alexander Schmidt Date: Tue, 6 Oct 2020 20:07:39 +0200 Subject: [PATCH 1/1] refined file following --- src/logalert.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/logalert.py b/src/logalert.py index 9722014..df9de07 100755 --- a/src/logalert.py +++ b/src/logalert.py @@ -10,16 +10,19 @@ import time MAX_LINES = 10 ALERT_INTERVAL = 86400 -def follow(filename): +def follow(path): while True: try: - with open(filename, "r") as f: + fd = os.open(path, os.O_RDONLY) + current_ino = os.fstat(fd).st_ino + with os.fdopen(fd, "r") as f: logging.info("Re-attached to log file.") for line in f: pass while True: line = f.readline() if not line: - if not os.path.exists(filename): + if os.stat(path).st_ino != current_ino or \ + os.stat(path).st_size < f.tell(): break else: time.sleep(1.0) -- 2.39.5