python分析log
最近做的一个项目,系统log下会生成如下的log(部分):
[-- ::] Processing File transfer configured from ship to shore....
[-- ::] File Limit is =
[-- ::] Done processing File transfer configured from ship to shore....
[-- ::] Connection starts now
[-- ::] Connected Via FB
[-- ::] Before Setting Server URL
[-- ::] Setting Server URL is done.
[-- ::] SHOREMAIL: Start Preparing Shore Files
[-- ::] prepareShoreMail: The outboxDir at shore is empty.
[-- ::] SHOREMAIL: End Preparing Shore Files
[-- ::] Exchange File: toUpload= true
[-- ::] Exchange File: toDownload= false
[-- ::] Exchange File: toDelete= true
[-- ::] Exchange File: DownStatus= Done
[-- ::] Exchange File: emailStatus=
[-- ::] LogCon: Updating status: Partial
[-- ::] Before total_zip_size_sent=
....
然后需要去算它的响应时间,说白了就是给你一堆类似的log,然后你去算每个log运行的时间。有很多语言可以用,我用的python,很久不写,回忆一下
直接上代码:
import os,sys,csv,time,re,datetime; class cur_env:
path = sys.path[0]
#print(path)
os.chdir(path)
result = path + '\\results' class csv_writer: # get the log file list in the folder
def get_files(self):
file_list = list()
files = os.listdir(cur_env.path)
for file in files:
if file.endswith('.log'):
file_list.append(file)
return file_list # generate result file name depend on run time
def gen_filename(self):
file_name = 'res_' + time.strftime('%y%m%d_%H%M%S',\
time.localtime(time.time()))+'.csv'
return file_name # create result folder if not exist
def create_resFolder(self):
if not os.path.isdir(cur_env.result):
os.makedirs(cur_env.result) # write csv response time log
def write_csv(self, file_name, content):
csvfile = open(cur_env.result + '\\' + file_name,'w+', newline = '')
headers = ['FILE NAME','TIMING(S)','LINE COUNT','DESC','WARNING']
try:
writer = csv.DictWriter(csvfile,headers)
writer.writeheader()
for con in content:
con = dict(zip(headers,con))
writer.writerow(con)
#writer.writerow(headers)
#writer.writerows(content)
finally:
del writer
csvfile.close # generate contents from log files
def gen_contents(self, file_list):
content = list()
for file in file_list:
log = logger(file)
log.generate_content()
logcnt = log.content
logcnt.insert(0,file)
content.append(logcnt)
return content class logger:
'''
"generate 'TIMING','LINE COUNT','DESC','WARNING' from log files"
'''
def __init__(self, file):
self.logfile = open(cur_env.path + '\\' +file,'r+')
self.content = dict() def generate_content(self):
text = self.logfile.read()
# get total lines of the log file
lines = text.count('\n')
pattern = re.compile(r'\[.*\]')
lsttime = re.findall(pattern,text)
if (lines <=0 or len(lsttime) <=0):
warning = 'Unknown issue. Please verify the format of your log file.'
self.content = ['','','',warning]
return
start_time = str(lsttime[0])[1:-1]
end_time = str(lsttime[-1])[1:-1] # get desc. log start time & end time
desc = 'start time is: ' + start_time + '. end time is: ' + end_time # get the response time
timing = time.mktime(time.strptime(end_time,'%Y-%m-%d %H:%M:%S'))\
- time.mktime(time.strptime(start_time,'%Y-%m-%d %H:%M:%S')) # verify if there is any error in the log
pattern = re.compile(r'[Ee][Rr][Rr][Oo][Rr]')
errors = len(re.findall(pattern,text))
if (errors > 0):
warning = 'Totally ' + str(errors) + ' error(s) detected in the log.'
else:
warning = 'NA' # generate result content
self.content = [str(timing),str(lines),desc,warning]
self.logfile.close() # Testing code
writer = csv_writer()
writer.create_resFolder()
file_name = writer.gen_filename()
file_list = writer.get_files()
content = writer.gen_contents(file_list)
writer.write_csv(file_name, content)
三个类,cur_env主要放的系统当前路径之类的,logger类根据每个log文件,生成相关的csv文件的行,关键信息包括 'TIMING','LINE COUNT','DESC','WARNING';最后一个类是写csv文件的csv_writer,测试结果如下:

总结: python很久不用,结果很多地方我都要重新去百度或者查帮助,只有自己动手去写了才能记的更清楚。
python分析log的更多相关文章
- python 分析慢查询日志生成报告
		python分析Mysql慢查询.通过Python调用开源分析工具pt-query-digest生成json结果,Python脚本解析json生成html报告. #!/usr/bin/env pyth ... 
- C# 程序A发送Log记录给程序B,程序B处理和分析Log记录
		C# 程序A发送Log记录给程序B,程序B处理和分析Log记录 关键字:C# ;Log记录 ;在线Log记录;Socket:httplistener 一.常用场景 1. APP开发,在真机或者虚拟机上 ... 
- Java程序猿修炼之道 之 Logging(3/3) - 怎么分析Log
		1. 说明 作为一个程序猿我们常常要做一件事情:获取某个Log文件,从当中找出自己想要的信息. 本文总结了我在工作中使用了哪些工具来分析Log文件获取我想要的信息,我近期几年的工作环境都是server ... 
- 用Python分析国庆旅游景点,告诉你哪些地方好玩、便宜、人又少
		注:本人参考“裸睡的猪”公众号同名文章,学习使用. 一.目标 使用Python分析出国庆哪些旅游景点:好玩.便宜.人还少的地方,不然拍照都要抢着拍! 二.获取数据 爬取出行网站的旅游景点售票数据,反映 ... 
- Python分析盘点2019全球流行音乐:是哪些歌曲榜单占领了我们?
		写在前面:圣诞刚过,弥留者节日气息的大家是否还在继续学习呐~在匆忙之际也不忘给自己找几首好听的歌曲放松一下,缠绕着音乐一起来看看关于2019年流行音乐趋势是如何用Python分析的吧! 昨天下午没事儿 ... 
- Python分析数据难吗?某科技大学教授说,很难但有方法就简单
		用python分析数据难吗?某科技大学的教授这样说,很难,但要讲方法,主要是因为并不是掌握了基础,就能用python来做数据分析的. 所谓python的基础,也就是刚入门的python学习者,学习的基 ... 
- 五月天的线上演唱会你看了吗?用Python分析网友对这场线上演唱会的看法
		前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:CDA数据分析师 豆瓣9.4分!这场线上演唱会到底多好看? 首先让我 ... 
- Python分析离散心率信号(下)
		Python分析离散心率信号(下) 如何使用动态阈值,信号过滤和离群值检测来改善峰值检测. 一些理论和背景 到目前为止,一直在研究如何分析心率信号并从中提取最广泛使用的时域和频域度量.但是,使用的信号 ... 
- Python分析离散心率信号(中)
		Python分析离散心率信号(中) 一些理论和背景 心率信号不仅包含有关心脏的信息,还包含有关呼吸,短期血压调节,体温调节和荷尔蒙血压调节(长期)的信息.也(尽管不总是始终如一)与精神努力相关联,这并 ... 
随机推荐
- bzoj3319: 黑白树
			Description 给定一棵树,边的颜色为黑或白,初始时全部为白色.维护两个操作:1.查询u到根路径上的第一条黑色边的标号.2.将u到v 路径上的所有边的颜色设为黑色.Notice:这棵树的 ... 
- Linux命令详解nice
			[命令]nice — 调整程序运行的优先级 [格式]nice [OPTION] [command [arguments...]] [说明] 在当前程序运行优先级基础之上调整指定值得到新的程序运行优先级 ... 
- 迁移学习(Transfer Learning)(转载)
			原文地址:http://blog.csdn.net/miscclp/article/details/6339456 在传统的机器学习的框架下,学习的任务就是在给定充分训练数据的基础上来学习一个分类模型 ... 
- PHPWord生成word实现table合并(colspan和rowspan)
			PHPWord(http://phpword.codeplex.com/)是一个很好处理和生成WORD文档的工具,但是生成复杂的word,如colspan和rowspan的实现,还是需要你做些修改. ... 
- 如何配置apache最大的并发数
			如何配置apache最大的并发数MPM(多路处理模块)常见:1.perfork 预处理进程方式2.worker 工作者模式3.winnt 在windows使用 案例:把apache的最大并发数配置成1 ... 
- C#应用程序单进程检测
			以下程序经过VS2010测试通过: /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Ma ... 
- SpringMVC参数类型转化错误调试方法
- mysql创建表与索引
			-- ---------------------------- -- 商品属性表 -- AUTO_INCREMENT=1为设置了自增长的字段设置起点,1为起点 -- ENGINE选择:MyISAM类型 ... 
- DG_Oracle DataGuard作用和概念(概念)
			2014-06-03 Created By BaoXinjian 
- suibi1117
			测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等. 我所了解的模块接口测试大体分为两类:模块接口测试和web接口测试 模块接口测试是单元测试的基础.它主要测试模块的调用 ... 
