python 实现提取log文件中的关键句子,并进行统计分析


Posted in Python onDecember 24, 2019

利用python开发了一个提取sim.log 中的各个关键步骤中的时间并进行统计的程序:

#!/usr/bin/python2.6
import re,datetime
file_name='/home/alzhong/logs/qtat1/R2860.01.13/sim-applycommitrollback-bld1.log'
file=open(file_name,'r')
acnum=[];time_res=[];lnum=0
def trans_time(time):
  t1=datetime.datetime.strptime(time,'%y/%m/%d %H:%M:%S')
  return t1
for (num,line) in enumerate(file):

  if(re.search(r'^(.*)BEGINNING SIM PROCEDURE(.*)$',line)):
    m=re.search(r'^(.*)BEGINNING SIM PROCEDURE(.*)$',line)
    print 'Step %d:'%(lnum), m.group(0);lnum+=1
    acnum.append(trans_time(line[0:17]))
  elif(re.search(r'^(.*)CP_W(.*)$', line)):
    m=re.search(r'^(.*)CP_W(.*)$', line)
    print 'Step %d:'%(lnum), m.group(0);lnum+=1
    acnum.append(trans_time(line[0:17]))
  elif(re.search(r"^(.*)VERIFY_S(.*)$", line)):
    m=re.search(r"^(.*)VERIFY_S(.*)$", line)
    print 'Step %d:'%(lnum), m.group(0);lnum+=1
    acnum.append(trans_time(line[0:17]))
  elif(re.search(r"^(.*)--action commit(.*)$",line)):
    m=re.search(r"^(.*)--action commit(.*)$",line)
    print 'Step %d:'%(lnum), m.group(0);lnum+=1
    acnum.append(trans_time(line[0:17]))
  elif(re.search(r"^(.*)COMPLETED SIM PROCEDURE(.*)$",line)):
    m=re.search(r"^(.*)COMPLETED SIM PROCEDURE(.*)$",line)
    print 'Step %d:'%(lnum), m.group(0);lnum+=1
    acnum.append(trans_time(line[0:17]))
  elif(re.search(r"^(.*)RESUMING SIM PROCEDURE(.*)$",line)):
    m=re.search(r"^(.*)RESUMING SIM PROCEDURE(.*)$",line)
    print 'Step %d:'%(lnum), m.group(0);lnum+=1
    acnum.append(trans_time(line[0:17]))

file.close()
if(re.search(r"^(.*)backout(.*)$",file_name)):
  time_res.append((acnum[2]-acnum[0]).seconds/60)
  time_res.append((acnum[4]-acnum[3]).seconds/60)
  time_res.append((acnum[6]-acnum[5]).seconds/60)
  time_res.append(((acnum[8]-acnum[7])+(acnum[10]-acnum[9])+(acnum[13]-acnum[11])).seconds/60)
  print "\n3). sim --proc update --action apply to \"CP_WARNING\" %s mins" %(time_res[0])
  print "4). sim --proc update --action resume to \"VERIFY_SOFTWARE\" %s mins"%(time_res[1])
  print "5). sim --proc update --action resume to \"COMMIT\" %s mins"%(time_res[2])
  print "8). Backout from RXX to RXX %s mins"%(time_res[3])
elif(re.search(r"^(.*)rollback(.*)$",file_name)):
  time_res.append((acnum[2]-acnum[0]).seconds/60)
  time_res.append((acnum[4]-acnum[3]).seconds/60)
  time_res.append((acnum[6]-acnum[5]).seconds/60)
  time_res.append((acnum[8]-acnum[7]).seconds/60)
  time_res.append(((acnum[10]-acnum[9])+(acnum[12]-acnum[11])+(acnum[15]-acnum[13])).seconds/60)
  print "\n3). sim --proc update --action apply to \"CP_WARNING\" %s mins" %(time_res[0])
  print "4). sim --proc update --action resume to \"VERIFY_SOFTWARE\" %s mins"%(time_res[1])
  print "5). sim --proc update --action resume to \"COMMIT\" %s mins"%(time_res[2])
  print "6). sim --proc update --action commit to end of Patch %s mins"%(time_res[3])
  print "8). Rollback from RXX to RXX %s mins" %(time_res[4])
if __name__ == '__main__':
  pass
:q!
<lsslogin1-alzhong>/home/alzhong/tools: ls
simt
<lsslogin1-alzhong>/home/alzhong/tools: ./simt
Step 0: 14/06/16 12:31:32 BEGINNING SIM PROCEDURE 'update apply' type=hot ...
Step 1: 14/06/16 13:18:42 RESUMING SIM PROCEDURE 'update apply' type=hot ...
Step 2: 14/06/16 13:30:43 SIM0317 PAUSE_REQUEST: (PROCEDURE) [PAUSE(CP_WARNING): Use 'sim --proc update --action resume' to continue...] (update:1435)
Step 3: 14/06/16 13:43:40 RESUMING SIM PROCEDURE 'update apply' type=hot ...
Step 4: 14/06/16 13:47:49 SIM0343 PAUSE_REQUEST: (PROCEDURE) [PAUSE(VERIFY_SOFTWARE): Use 'sim --proc update --action resume' to continue...] (update:1634)
Step 5: 14/06/16 13:54:26 RESUMING SIM PROCEDURE 'update apply' type=hot ...
Step 6: 14/06/16 14:25:41 SIM0496 PAUSE_REQUEST: (COMMIT) [PAUSE(COMMIT): Use 'sim --proc update --action commit' to continue...] (update:2579)
Step 7: 14/06/16 14:41:51 RESUMING SIM PROCEDURE 'update commit' type=hot ...
Step 8: 14/06/16 15:18:34 COMPLETED SIM PROCEDURE 'update commit' type=hot
Step 9: 14/06/16 15:31:35 BEGINNING SIM PROCEDURE 'update rollback' type=hot level=9999 ...
Step 10: 14/06/16 15:47:34 SIM0091 PAUSE_REQUEST: (PROCEDURE) [PAUSE(CP_WARNING): Use 'sim --proc update --action resume' to continue...] (update_rlbk:421)
Step 11: 14/06/16 15:53:30 RESUMING SIM PROCEDURE 'update rollback' type=hot level=9999 ...
Step 12: 14/06/16 16:02:03 SIM0135 PAUSE_REQUEST: (PROCEDURE) [PAUSE(VERIFY_SOFTWARE): Use 'sim --proc update --action resume' to continue...] (update_rlbk:564)
Step 13: 14/06/16 16:04:22 RESUMING SIM PROCEDURE 'update rollback' type=hot level=9999 ...
Step 14: 14/06/16 16:09:42 RESUMING SIM PROCEDURE 'update rollback' type=hot level=9999 ...
Step 15: 14/06/16 16:26:56 COMPLETED SIM PROCEDURE 'update rollback' type=hot level=9999

3). sim --proc update --action apply to "CP_WARNING" 59 mins
4). sim --proc update --action resume to "VERIFY_SOFTWARE" 4 mins
5). sim --proc update --action resume to "COMMIT" 31 mins
6). sim --proc update --action commit to end of Patch 36 mins
8). Rollback from RXX to RXX 47 mins

以上这篇python 实现提取log文件中的关键句子,并进行统计分析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
17个Python小技巧分享
Jan 23 Python
Python实现在线程里运行scrapy的方法
Apr 07 Python
Python验证企业工商注册码
Oct 25 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
Jul 04 Python
Tensorflow 同时载入多个模型的实例讲解
Jul 27 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 Python
Python笔记之代理模式
Nov 20 Python
Spring实战之使用util:命名空间简化配置操作示例
Dec 09 Python
python关于变量名的基础知识点
Mar 03 Python
python 如何调用远程接口
Sep 11 Python
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 Python
Python3.7+tkinter实现查询界面功能
Dec 24 #Python
python 读取更新中的log 或其它文本方式
Dec 24 #Python
如何基于python操作excel并获取内容
Dec 24 #Python
python实现tail实时查看服务器日志示例
Dec 24 #Python
Python 模拟动态产生字母验证码图片功能
Dec 24 #Python
python中return的返回和执行实例
Dec 24 #Python
Python文件操作函数用法实例详解
Dec 24 #Python
You might like
桌面中心(二)数据库写入
2006/10/09 PHP
通过文字传递创建的图形按钮
2006/10/09 PHP
解析php mysql 事务处理回滚操作(附实例)
2013/08/05 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
jQuery 遍历json数组的实现代码
2020/09/22 Javascript
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
jQuery监听文件上传实现进度条效果的方法
2016/10/16 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
jQuery Raty星级评分插件使用方法实例分析
2019/11/25 jQuery
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
应聘自荐书
2013/10/08 职场文书
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
初中生个人学习的自我评价
2013/12/04 职场文书
求职信怎么写范文
2014/05/26 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang
《黑岩★★射手 DAWN FALL》BD发售宣传CM公开
2022/04/04 日漫
单机多实例部署 MySQL8.0.20
2022/05/15 MySQL