[Erp5-report] r25733 - /erp5/trunk/utils/merge_zlogs
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Feb 26 19:26:33 CET 2009
Author: jm
Date: Thu Feb 26 19:26:30 2009
New Revision: 25733
URL: http://svn.erp5.org?rev=25733&view=rev
Log:
Add script to merge Zope logs (event.log, CMFActivity.log...) from several ZEO clients.
Output is sorted chronologically and each line is prefixed by a 2-digit index indicating the log where it comes from.
Added:
erp5/trunk/utils/merge_zlogs (with props)
Added: erp5/trunk/utils/merge_zlogs
URL: http://svn.erp5.org/erp5/trunk/utils/merge_zlogs?rev=25733&view=auto
==============================================================================
--- erp5/trunk/utils/merge_zlogs (added)
+++ erp5/trunk/utils/merge_zlogs [utf8] Thu Feb 26 19:26:30 2009
@@ -1,0 +1,67 @@
+#!/usr/bin/python
+import os.path, sys
+
+separator = '------'
+
+class Log(object):
+ def __init__(self, path, prefix):
+ if path == '-':
+ self.file = sys.stdin
+ else:
+ self.file = file(path)
+ self.prefix = prefix
+ def read(self):
+ self.msg = []
+ for line in self.file:
+ while line and line[-1] in '\r\n':
+ line = line[:-1]
+ if line != separator:
+ self.msg.append(line)
+ elif self.msg:
+ break
+ if self.msg:
+ for date in self.msg[0].split():
+ if len(date) == 19:
+ self.date = date
+ return True
+ def write(self):
+ print '%s %s\n%s' % (self.prefix, '\n'.join(self.msg), separator)
+ def __cmp__(self, other):
+ return cmp(self.date, other.date)
+
+def main():
+ if len(sys.argv) > 2:
+ log_set = set()
+ index = 0
+ for log in sys.argv[1:]:
+ if log in ('-h', '--help'):
+ break
+ index += 1
+ log = Log(log, '%02i' % index)
+ if log.read():
+ log_set.add(log)
+ else:
+ while log_set:
+ log = min(log_set)
+ log.write()
+ if not log.read():
+ log_set.remove(log)
+ return 0
+ cmd = sys.argv and os.path.basename(sys.argv[0]) or 'merge_zlogs'
+ print """merge_zlogs -- Merge Zope logs sorting lines by time.
+
+Usage: %(cmd)s [log]...
+
+hyphen-minus (-) is a shortcut for /dev/stdin
+Each output line is prefixed by a 2-digit index of the log where it comes from, starting from 1.
+
+Example to gather logs from several hosts:
+ %(cmd)s <(ssh host1 '%(cmd)s %(event_logs)s') \\
+ %(_)s <(ssh host2 '%(cmd)s %(event_logs)s')""" % {
+'cmd': cmd,
+'_': ' ' * len(cmd),
+'event_logs': '/var/lib/zope/zeo_client?/log/event.log',
+}
+
+if __name__ == '__main__':
+ sys.exit(main())
Propchange: erp5/trunk/utils/merge_zlogs
------------------------------------------------------------------------------
svn:executable = *
More information about the Erp5-report
mailing list