I need to search a log file for a specific string (Successfully Sent) and
report the number of instances in the last hour (from when executed) and
total for the day so far (midnight till the time executed). Can anyone
provide any examples of such a program or get me started?
from datetime import datetime, timedelta
from time import mktime, strptime
now = datetime.now()
midnight = now.replace(hour=0, minute=0, second=0, microsecond=0)
one_hour_ago = now - timedelta(hours=1)
daily_instances = 0
hourly_instances = 0
with open('myfile.log') as logfile:
for line in logfile:
if 'Successfully Sent' in line:
time_string = line[0:19]
struct = strptime(time_string, "%Y-%m-%dT%H:%M:%S")
log_time = datetime.fromtimestamp(mktime(struct))
if log_time > midnight:
daily_instances += 1
if log_time > one_hour_ago:
hourly_instances += 1
print "Instances in the last hour: ", hourly_instances
print "Instances since midnight: ", daily_instances
This code assumes that log lines begin with a timestamp similar to
"2013-01-23T09:27:01". If the timestamp is in a different format, or
occurs elsewhere in the line, you'll have to adjust for that.
--
John Gordon A is for Amy, who fell down the stairs
B is for Basil, assaulted by bears
-- Edward Gorey, "The Gashlycrumb Tinies"