人气旺 发表于 2014-9-28 09:18:55

apache日志分析(python)

#!/usr/bin/env python

import sys
import datetime
import socket
from file_backwards import *

MONTH = {
    'Jan':1,
    'Feb':2,
    'Mar':3,
    'Apr':4,
    'May':5,
    'Jue':6,
    'Jul':7,
    'Aug':8,
    'Sep':9,
    'Oct':10,
    'Nov':11,
    'Dec':12,
}

def parse_apache_date(datestr):
    day, month, yearandtime = datestr.split('/')
    year, hour, minute,second= yearandtime.split(':')
    return datetime.datetime(int(year),MONTH,int(day),int(hour),int(minute))

def countDict(d, k):
    if k in d:
      d += 1
    else:
      d = 1

def parse_apache_log(logfile,ten_m):
    result = {}
    with open(logfile) as fd:
      for line in filerev(fd):
            splited_line = line.split()
            datestr = splited_line
            apache_date = parse_apache_date(datestr)
            if apache_date > ten_m:
                countDict(result, apache_date.strftime('%s'))
            else:
                return result

if __name__ == '__main__':
    now = datetime.datetime.now()
    timedelta = datetime.timedelta(minutes=10)
    ten_m_ago = now - timedelta
    key = 'http.count'
    data = parse_apache_log(sys.argv, ten_m_ago)
    sock = socket.socket()
    sock.connect(('127.0.0.1', 2003))
    print data
    for k, v in data.items():
      sock.send("%s %d %s\n" % (key, v, k))
页: [1]
查看完整版本: apache日志分析(python)