X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=bin%2Fmtail.py;h=f5d287c3bc333068a10cb2b8dd85007323d04118;hb=HEAD;hp=954b1e522d62a77e8dd3540028c688c3f26ce0c4;hpb=6469aed9563248b2d3c78a1b48ad35f0b4d343a3;p=myplc.git diff --git a/bin/mtail.py b/bin/mtail.py index 954b1e5..f5d287c 100755 --- a/bin/mtail.py +++ b/bin/mtail.py @@ -8,12 +8,13 @@ It can be altered to fit other formats too ''' import os, sys, time +import select +import sys, tty, termios + from optparse import OptionParser class mtail: - subversion_id = "$Id$" - default_time_format = "%H:%M:%S" def __init__ (self, args ): @@ -29,7 +30,7 @@ class mtail: usage = """usage: %prog [options] file-or-dir ... example: # %prog -e '*access*' /var/log""" - parser=OptionParser(usage=usage,version=self.subversion_id) + parser=OptionParser(usage=usage) # tail_period parser.add_option("-p","--period", type="int", dest="tail_period", default=1, help="Files check period in seconds") @@ -49,6 +50,8 @@ example: parser.add_option("-u","--usual",action="store_true",dest="plc_mode",default=False, help="Shortcut for watching /var/log with default settings") + parser.add_option("-s","--sfa",action="store_true",dest="sfa_mode",default=False, + help="Shortcut for monitoring server-side SFA log files") # verbosity parser.add_option("-v","--verbose", action="store_true", dest="verbose", default=False, @@ -67,8 +70,12 @@ example: # watch the postgresql logs as well self.args.append('/var/lib/pgsql/data/pg_log') + if self.options.sfa_mode: + self.args.append("/var/log/sfa.log") + self.args.append("/var/log/sfa_import.log") + self.args.append("/var/log/httpd/sfa_access_log") + if self.options.verbose: - print 'Version:',self.subversion_id print 'Options:',self.options print 'Arguments:',self.args @@ -230,7 +237,8 @@ example: sys.exit(1) counter = 0 - while 1: + fdin = sys.stdin.fileno() + while True: ## hit the period ? # dont do this twice at startup if (counter !=0 and counter % self.options.rescan_period == 0): @@ -241,7 +249,24 @@ example: time.sleep(1) counter += 1 - + # react on some keys - rough but convenient + if os.isatty(fdin): + # read stdin + typed=[] + while select.select([sys.stdin,],[],[],0.0)[0]: + typed.append(sys.stdin.read(1)) +# print 'found chars',typed + for char in typed: + if char.lower() in ['l']: os.system("clear") + elif char.lower() in ['m']: + for i in range(3) : print 60 * '=' + elif char.lower() in ['q']: sys.exit(0) + elif char.lower() in ['h']: + print """l: refresh page +m: mark +q: quit +h: help""" + ### if __name__ == '__main__': mtail (sys.argv[1:]).run()