python日志统计_python试用-日志统计

最近两天尝试用python代替bash写Linux Shell脚本来统计日志。发现python写起来比bash更简单和容易阅读,发现不少惊喜。所以写了一个粗糙的脚本来统计日志。

目标

1、通过简单命令和脚本统计事件发生数

2、日志限定文本类型

假定环境

日志文件:1.log

test:aaa,1

test:bbc,1

test:bbc,2

test:bba,2

test:baa,3

test:baa,1

other1:xx,bb,3

other2:32

日志文件:2.log

test:ab,2

other3:123

统计脚本

log_static.py

统计脚本

1 #!/usr/bin/python2 importsys3 #1st arg for tag key4 key="test:"iflen(sys.argv)>2;elsesys.argv[1]5 #2nd arg for split signal6 split=","iflen(sys.argv)>3elsesys.argv[2]7 #3rd arg for static index8 stat_idx=0iflen(sys.argv)>4elseint(sys.argv[3])9 key_map={}10 #loop for read11 whileTrue:12 #reading line from piple13 line=sys.stdin.readline()14 line=line[:-1]ifline.endswith("\n")elseline15 iflen(line)==0:16 break17 #find current key to static18 cur_key=line.split(key)[1].split(split)[stat_idx]19 #update static20 key_map[cur_key]=key_map[cur_key]+1if(key_map.has_key(cur_key))else121 22 #sort the map23 result=sorted(key_map.items(),lambdax,y: cmp(y[1],x[1]))24 #print out25 forkey,valueinresult:26 print"%s,%s"%(key,value)

运行

添加执行权限:chmod + log_static.py

选择关键标签"test:",日志值分隔符为","

统计第一位发生次数:grep "test" *.log | ./log_static.py test: , 0 > 1.cvs

统计第二位发生次数:grep "test" *.log | ./log_static.py test: , 1 > 2.cvs

结果

统计文件:1.cvs

bbc,2

baa,2

ab,1

aaa,1

bba,1

统计文件:2.cvs

1,3

2,3

3,1

备注

#!/usr/bin/python              python库引用

import sys                  导入系统组建

sys.argv                   调用参数

target = value 1 if (statement) else value2 相当于target = statement ? value 1 : value2

python的通过缩进判断分块,没有结束符号

while (statement) True:

#code here

设置arr = [1,2,3,4],arr[:-2]筛选变为[1,2]  除了筛选还可以赋值arr[0 for x in range(0, 10)]

lambda x,y : cmp(y[1], x[1])        lambda运算,表述传入参数x,y 返回y[1]和x[1]的比较值(倒序)

for x,y in list                表示枚举list的每一项(item),其中x取值item[0],y取值item[1]

print "%s,%s" % (x,y)           格式化打印,%s代表该位置的字符串类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值