parser.add_option("-p","--period", type="int", dest="tail_period", default=1,
help="Files check period in seconds")
# rescan_period
- parser.add_option("-d","--dir-period", type="int", dest="rescan_period", default=20,
+ parser.add_option("-d","--dir-period", type="int", dest="rescan_period", default=5,
help="Directories rescan period in seconds")
# time format
parser.add_option("-f","--format", dest="time_format", default=mtail.default_time_format,
help="Run in verbose mode")
(self.options, self.args) = parser.parse_args(args)
- self.optparse = parser
+ self.option_parser = parser
### plc shortcuts
if self.options.plc_mode:
+ # monitor all files in /var/log with some exceptions
self.options.excludes.append('*access_log')
self.options.excludes.append('*request_log')
self.options.excludes.append('*.swp')
self.args.append('/var/log')
+ # watch the postgresql logs as well
+ self.args.append('/var/lib/pgsql/data/pg_log')
if self.options.verbose:
print 'Version:',self.subversion_id
print 'Arguments:',self.args
def file_size (self,filename):
- return os.stat(filename)[6]
+ try:
+ return os.stat(filename)[6]
+ except:
+ print "WARNING: file %s has vanished"%filename
+ return 0
def number_files (self):
return len(self.files)
self.files[filename]['size']=size
elif size < offset:
self.show_file_when_size_decreased(filename,offset,size)
- del self.files[filename]['old-file']
+ try:
+ del self.files[filename]['old-file']
+ except:
+ pass
else:
# enter file with current size
# if we didn't set format yet, it's because we are initializing
print sys.argv[0],": WARNING : no file in scope"
self.format="%s"
else:
- self.margin=max(*[len(f) for f in filenames])
+ if len(filenames)==1:
+ self.margin=len(filenames[0])
+ else:
+ # this stupidly fails when there's only 1 file
+ self.margin=max(*[len(f) for f in filenames])
self.format="%%%ds"%self.margin
if self.options.verbose:
print 'Current set of files:',filenames
print label,
def show_file_end (self, filename, offset, size):
- file = open(filename,"r")
+ try:
+ file = open(filename,"r")
+ # file has vanished
+ except:
+ return
file.seek(offset)
line=file.read(size-offset)
self.show_now()
def run (self):
- if self.number_files() == 0:
- self.optparse.print_help()
+ if len(self.args) == 0:
+ self.option_parser.print_help()
sys.exit(1)
counter = 0