python 统计分析apache日志_python 实现nginx/apache 日志格式的统计脚本

# !/usr/bin/env python

# -*- coding:utf8 -*-

import sys

import re

import time

import os

def main():

months ={

"jan": 1, "Feb": 2, "Mar": 3, "Apr": 4, "May": 5, "Jun": 6,

"Jul": 07, "Aug": 8, "Sep": 9, "Oct": 10, "Nov": 11, "Dec": 12}

error = '请输入正确的时间格式,例如 2016-08-03 10:00:00'

start = raw_input("请输入要查询的开始时间段如:2016-08-03 10:00:00")

#start = '2016-08-03 10:37:00'

pattern = re.compile("^201[3-6]-(0[0-9]|1[0-2])-([0-2][0-9]|3[0-1])\s([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$")

i_start = re.match(pattern, start)

if i_start == None:

print error

sys.exit(0)

end = raw_input("请输入要查询的结束时间段如:2016-08-03 10:01:00")

#end = '2016-08-03 10:38:00'

i_end = re.match(pattern, end)

if i_end == None:

print error

sys.exit(0)

print "time format is true !"

## 获取格式的时间的定时间戳 ##

start_stamp = time.mktime(time.strptime(start, "%Y-%m-%d %H:%M:%S"))

end_stamp = time.mktime(time.strptime(end, "%Y-%m-%d %H:%M:%S"))

## 处理文件 ###

log_abpath = raw_input("请输入log文件的绝对路径 例如:/var/log/apache2/access.log")

filepath = os.path.exists(log_abpath)

if not filepath:

raise "对不起该目录文件不存在!!"

sys.exit(0)

print "文件存在!!"

f = open(log_abpath, 'r')

#f = open("/var/log/apache2/access.log", "r")

logs = f.readlines()

position = 0

t_logs = []

for log in logs:

position += 1

log = log.split(" ")

log.insert(0, position)

t_logs.append(log)

for t_log in t_logs:

#print type(t_log)

tim = str(t_log[4][1:])

mon = tim[3:6]

#print mon

#print tim

#print type(tim)

#print months[mon]

tim_f = tim.replace(mon, str(months[mon]))

#print tim_f

d = time.strptime(tim_f, "%d/%m/%Y:%H:%M:%S")

stamp = time.mktime(d)

t_log.insert(1, stamp)

# print t_logs

count = 0

for t_log in t_logs:

if t_log[1] > start_stamp < end_stamp:

print "该时间段内的请求日志出现在,"+str(t_log[0])+"行"

count += 1

if count != 0:

print "该段时间内一共出现了%d次请求"%(count)

else:

print "对不起,我已经努力帮你找了,可是找到该段时间的日志信息"

if __name__ == '__main__':

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值