From: Guillaume Pellerin Date: Mon, 13 Jan 2014 13:33:41 +0000 (+0100) Subject: rn, avoid first log X-Git-Tag: 1.0~3^2~9 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=07a4cf2de78a76a6b14387283fe0fb3049dc8e0b;p=telecaster-server.git rn, avoid first log --- diff --git a/tcserver/conf/usr/local/share/telecaster/scripts/monitor_check.py b/tcserver/conf/usr/local/share/telecaster/scripts/monitor_check.py new file mode 100644 index 0000000..a758465 --- /dev/null +++ b/tcserver/conf/usr/local/share/telecaster/scripts/monitor_check.py @@ -0,0 +1,66 @@ +import sys, time, logging, socket +from threading import Thread +from logging.handlers import SMTPHandler + +from watchdog.observers import Observer +from watchdog.events import * + + +IGNORE_PATTERNS = ['*.git/*', '*.swp', '*.swpx', '*~', '*.tmp',] +HOSTNAME = socket.gethostname() + +class EmailLogger(object): + """An email logging class""" + + def __init__(self, mailhost, fromaddr, toaddrs, subject): + self.logger = logging.getLogger('telecaster') + self.hdlr = SMTPHandler(mailhost, fromaddr, toaddrs, subject) + self.formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') + self.hdlr.setFormatter(self.formatter) + self.logger.addHandler(self.hdlr) + self.logger.setLevel(logging.INFO) + + +class ActivityEventHandler(PatternMatchingEventHandler): + + activity = True + + def on_modified(self, event): + super(ActivityEventHandler, self).on_modified(event) + self.activity = True + + +class ActivityCheck(Thread): + + def __init__(self, period, path, mailhost, fromaddr, toaddrs): + Thread.__init__(self) + self.period = int(period) + self.path = path + self.activity = False + self.subject = HOSTNAME + ' : ' + 'telecaster monitor activity' + self.logger = EmailLogger(mailhost, fromaddr, toaddrs, self.subject) + self.event_handler = ActivityEventHandler(ignore_patterns=IGNORE_PATTERNS) + self.observer = Observer() + self.observer.schedule(self.event_handler, path, recursive=True) + self.observer.start() + + def run(self): + while True: + if not self.event_handler.activity: + self.logger.logger.error('The monitor is NOT recording anymore!') + else: + self.event_handler.activity = False + time.sleep(self.period) + + def stop(self): + self.observer.stop() + +if __name__ == "__main__": + period = sys.argv[1] + path = sys.argv[2] + mailhost = sys.argv[3] + fromaddr = sys.argv[4] + toaddrs = sys.argv[5].split(',') + check = ActivityCheck(period, path, mailhost, fromaddr, toaddrs) + check.start() + check.join()