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语言写
代码要清晰整洁,有必要的注释
要考虑必要的可扩展性(请思考实际应用中哪些因素是会变化的,程序要能适应这
些变化)
提交的内容:
程序流程的简要说明,关键算法的说明
源代码
测
日志格式是:文本格式,一条记录占一行。具体每个记录的格式因操作类型各不相
同,已知道有如下的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