Skip to content

Instantly share code, notes, and snippets.

@mwicat
Created September 3, 2012 07:46
Show Gist options
  • Select an option

  • Save mwicat/3607701 to your computer and use it in GitHub Desktop.

Select an option

Save mwicat/3607701 to your computer and use it in GitHub Desktop.
Reads you log files in syslog format like /var/log/syslog and shows log activity in hours per day
#!/usr/bin/env python
# usage: sudo ./czasomierz.py /var/log/syslog*
from datetime import datetime, timedelta, date, time
import sys
import gzip
from itertools import groupby
def parse_date(line):
fields = line.split()
return fields[:3]
def smart_open(fn):
return gzip.open(fn) if fn.endswith('.gz') else open(fn)
def main():
fns = sys.argv[1:]
files= [smart_open(fn) for fn in fns][::-1] or [sys.stdin]
lines = [line for f in files for line in f]
dates = [parse_date(line) for line in lines]
dates_day = groupby(dates, lambda x: x[1])
for group, grouper in dates_day:
lst = list(grouper)
start = lst[0]
end = lst[-1]
start_time = datetime.strptime(start[2], '%H:%M:%S')
end_time = datetime.strptime(end[2], '%H:%M:%S')
duration = end_time - start_time
print '%-40s%-40s%-40s' % (start, end, duration)
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment