码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-08-04 00:05:21      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:python   import   months   error   时间段   

# !/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()


本文出自 “bobo的运维之路” 博客,转载请与作者联系!

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

标签:python   import   months   error   时间段   

原文地址:http://shiyiguo.blog.51cto.com/4949751/1834116

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!