码迷,mamicode.com
首页 > 编程语言 > 详细

python处理nginx日志,并统计分析---我这个写的处理时间效率不高,有好方法,请大家指正

时间:2016-05-08 20:05:55      阅读:786      评论:0      收藏:0      [点我收藏+]

标签:python nginx 日志分析 日志统计


实际工作中,恰好需要处理一个nginx日志,做个简单的分析:


引子:

    开发已经有日志分析平台和工具,但为了查一个问题,需要分析原始日志。


要求:

    原始日志的倒数第二个字段不为空且不为‘-‘的情况下,统计倒数第四个字段不为空且不为‘-‘的且不重复的个数。


python脚本如下:


#!/usr/bin/env  python
#encoding=utf-8
# nginx_log_analysis.py

FileHd = open(‘aaa.com_access.log-20160506‘,‘r‘)
FileText = FileHd.readlines()
FileTextTemp = []
FileTextTempSplit = []
AAA_UID = []
FileHd.close()

for i in range(len(FileText)):
	FileTextTemp.append(FileText[i])
    	FileTextTempSplit.append(FileTextTemp[i].split(‘ ‘))
for i in range(len(FileTextTempSplit)):
	for j in range(len(FileTextTempSplit[i])):
		length = len(FileTextTempSplit[i])
                if FileTextTempSplit[i][length-2] != ‘-‘                and len(FileTextTempSplit[i][length-2]) != 0                and FileTextTempSplit[i][length-4] != ‘-‘                and len(FileTextTempSplit[i][length-4]) != 0:
                     AAA_UID.append(FileTextTempSplit[i][length-4])

‘‘‘
这样的aaa_uid统计是未去重的
STATS_FD = open(‘stats.txt‘,‘w‘)
for AAA_uid in AAA_UID:
    STATS_FD.writelines(aaa_uid+‘\n‘)
STATS_FD.close()
‘‘‘

‘‘‘
这是aaa_uid去重统计
‘‘‘
count = 0
STATS_FD = open(‘stats_uniq.txt‘,‘w‘)
AAA_UID_UNIQ = list(set(AAA_UID))
for aaa_uid in AAA_UID_UNIQ:
    STATS_FD.writelines(aaa_uid+‘\n‘)
    count += 1
STATS_FD.close()
print count


这样处理一个不到280MB的日志,time运行脚本:  

time  nginx_log_analysis.py

需要14秒多(一台资源是2核,4GB内存的虚拟机上运行)

本文出自 “linux与网络那些事” 博客,请务必保留此出处http://khaozi.blog.51cto.com/952782/1771183

python处理nginx日志,并统计分析---我这个写的处理时间效率不高,有好方法,请大家指正

标签:python nginx 日志分析 日志统计

原文地址:http://khaozi.blog.51cto.com/952782/1771183

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!