Python语言扫描日志并统计

来源:百度知道 编辑:UC知道 时间:2024/06/05 11:50:50
假定目前有一个程序系统,此系统运行时会不断产生日志,记录操作成功的情况。

日志格式是:文本格式,一条记录占一行。具体每个记录的格式因操作类型各不相

同,已知道有如下的2种操作产生的记录格式例子

第一种:

#1 0.0.0.0 [2007-06-12 23:27:08] request begin: OK

说明:

#1 是操作的订单的id=1的意思。

0.0.0.0 这部分是客户端的IP地址

[2007-06-12 23:27:08] 是本地时间

省下的后面的是文字描述

第二种:

#1 0.0.0.0 [2007-06-12 23:27:08] request end: OK

说明:

#1 是操作的订单的id=1的意思。

0.0.0.0 这部分是客户端的IP地址

[2007-06-12 23:27:08] 是本地时间

省下的后面的是文字描述

也就是第二种与第一种操作的记录区别仅在于文字描述

上述两种记录分别代表一个事务的开始和结束。

假定日志文件包含大量的操作记录,其中包括上述两种记录若干。你的任务是写一

个程序,扫描日志文件,得到如下的统计数据

1 计算平均每个事务所用的平均时间,最长,最短时间

2 统计不完整事务(就是有开始没结束的情况)的总数和详情。

程序要求:

命令行界面即可

用Python语言写

代码要清晰整洁,有必要的注释

要考虑必要的可扩展性(请思考实际应用中哪些因素是会变化的,程序要能适应这

些变化)

提交的内容:

程序流程的简要说明,关键算法的说明

源代码

修复了一些小的拼写错误
修复了出现无效数据行会出现错误的BUG
修复了最小值统计方法的错误
  
===================下面开始咯log.py========
# -*- coding: cp936 -*-
#上一句不可以删!表示中文路径是GBK编码
import datetime
#处理时间的模块
def sparse(target='log.txt') :
  tgfile = file(target,"r")
  event={}
  #event是一个字典,key是事件的编号,value是数据(可以利用嵌套来扩展数据)
  linelog = "Not Empty"
  while linelog:
    linelog = tgfile.readline()
    data = linelog.split(' ')
    #按空格将一行数据分为列表
    # print data #testing
    if len(data) > 4 : #有效的数据行
      time1 = data[2][1:] + ' ' + data[3][:-1]
      #将时间处理为(字符串):年-月-日 小时:分钟:秒
      time2 = datet