]> git.treefish.org Git - logalert.git/blobdiff - src/logalert.py
refined file following
[logalert.git] / src / logalert.py
index 509b24655197c6c75db861612de69341cfc91fd4..df9de076eb4e701577f7af5ebc83711ce6c8be2c 100755 (executable)
@@ -7,21 +7,22 @@ import shlex
 import subprocess
 import time
 
 import subprocess
 import time
 
-from line import Line
-
 MAX_LINES = 10
 ALERT_INTERVAL = 86400
 
 MAX_LINES = 10
 ALERT_INTERVAL = 86400
 
-def follow(filename):
+def follow(path):
     while True:
         try:
     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:
                 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)
                             break
                         else:
                             time.sleep(1.0)
@@ -113,8 +114,3 @@ for line in follow(args.logfile):
         if error_state:
             logging.info("Leaving error state.")
             error_state = False
         if error_state:
             logging.info("Leaving error state.")
             error_state = False
-            feed_handler( create_msg("Log Un-Alert",
-                                     "&#127774;",
-                                     args.logfile,
-                                     "Log is back to normal.",
-                                     lines) )