当前位置:首页 » 编程软件 » python日志分析脚本

python日志分析脚本

发布时间: 2022-05-15 08:52:31

⑴ 求python文本分析脚本,读取、显示、计数匹配条件行数。

#!/usr/bin/envpython
file_name='./log'#指定文件
stat={'+':0,'-':0}
f=open(file_name)
forlineinf:
ifline[0]in['+','-']:
stat[line[0]]+=1
print(line.rstrip())
print(" total:")
print("+: "+str(stat['+']))
print("-: "+str(stat['-']))

⑵ 如何用 python 分析网站日志

日志的记录

Python有一个logging模块,可以用来产生日志。
(1)学习资料
http://blog.sina.com.cn/s/blog_4b5039210100f1wv.html

http://blog.donews.com/limodou/archive/2005/02/16/278699.aspx
http://kenby.iteye.com/blog/1162698
http://blog.csdn.NET/fxjtoday/article/details/6307285
前边几篇文章仅仅是其它人的简单学习经验,下边这个链接中的内容比较全面。

http://www.red-dove.com/logging/index.html

(2)我需要关注内容
日志信息输出级别
logging模块提供了多种日志级别,如:NOTSET(0),DEBUG(10),
INFO(20),WARNING(30),WARNING(40),CRITICAL(50)。
设置方法:
logger = getLogger()
logger.serLevel(logging.DEBUG)

日志数据格式
使用Formatter设置日志的输出格式。
设置方法:
logger = getLogger()
handler = loggingFileHandler(XXX)
formatter = logging.Formatter("%(asctime)s %(levelname) %(message)s","%Y-%m-%d,%H:%M:%S")

%(asctime)s表示记录日志写入时间,"%Y-%m-%d,%H:%M:%S“设定了时间的具体写入格式。
%(levelname)s表示记录日志的级别。
%(message)s表示记录日志的具体内容。

日志对象初始化
def initLog():
logger = logging.getLogger()
handler = logging.FileHandler("日志保存路径")
formatter = logging.Formatter("%(asctime)s %(levelname) %(message)s","%Y-%m-%d,%H:%M:%S")
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel

写日志
logging.getLogger().info(), logging.getLogger().debug()......

2. 日志的分析。
(1)我的日志的内容。(log.txt)
2011-12-12,12:11:31 INFO Client1: 4356175.0 1.32366309133e+12 1.32366309134e+12
2011-12-12,12:11:33 INFO Client1: 4361320.0 1.32366309334e+12 1.32366309336e+12
2011-12-12,12:11:33 INFO Client0: 4361320.0 1.32366309389e+12 1.32366309391e+12
2011-12-12,12:11:39 INFO Client1: 4366364.0 1.32366309934e+12 1.32366309936e+12
2011-12-12,12:11:39 INFO Client0: 4366364.0 1.32366309989e+12 1.32366309991e+12
2011-12-12,12:11:43 INFO Client1: 4371416.0 1.32366310334e+12 1.32366310336e+12
2011-12-12,12:11:43 INFO Client0: 4371416.0 1.32366310389e+12 1.32366310391e+12
2011-12-12,12:11:49 INFO Client1: 4376450.0 1.32366310934e+12 1.32366310936e+12
我需要将上述内容逐行读出,并将三个时间戳提取出来,然后将其图形化。

(2) 文件操作以及字符串的分析。
打开文件,读取出一行日志。
file = file("日志路径",“r”)
while True:
line = file.readline()
if len(len) == 0:
break;
print line
file.close()

从字符串中提取数据。
字符串操作学习资料:

http://reader.you.com/sharelite?itemId=-4646262544179865983&method=viewSharedItemThroughLink&sharedBy=-1137845767117085734
从上面展示出来的日志内容可见,主要数据都是用空格分隔,所以需要使用字符串的
split函数对字符串进行分割:
paraList = line.split(),该函数默认的分割符是空格,返回值为一个list。
paraList[3], paraList[4], paraList[5]中分别以字符串形式存储着我需要的时间戳。

使用float(paraList[3])将字符串转化为浮点数。
(3)将日志图形化。
matplotlib是python的一个绘图库。我打算用它来将日志图形化。
matplotlib学习资料。
matplotlib的下载与安装:
http://yexin218.iteye.com/blog/645894
http://blog.csdn.Net/sharkw/article/details/1924949

对matplotlib的宏观介绍:
http://apps.hi..com/share/detail/21928578
对matplotlib具体使用的详细介绍:

http://blog.sina.com.cn/s/blog_4b5039210100ie6a.html
在matplotlib中设置线条的颜色和形状:
http://blog.csdn.net/kkxgx/article/details/python

如果想对matplotlib有一个全面的了解,就需要阅读教程《Matplotlib for Python developers》,教程下载地址:
http://download.csdn.net/detail/nmgfrank/4006691

使用实例
import matplotlib.pyplot as plt

listX = [] #保存X轴数据
listY = [] #保存Y轴数据
listY1 = [] #保存Y轴数据

file = file("../log.txt","r")#打开日志文件

while True:
line = file.readline()#读取一行日志
if len(line) == 0:#如果到达日志末尾,退出
break
paraList = line.split()
print paraList[2]
print paraList[3]
print paraList[4]
print paraList[5]
if paraList[2] == "Client0:": #在坐标图中添加两个点,它们的X轴数值是相同的
listX.append(float(paraList[3]))
listY.append(float(paraList[5]) - float(paraList[3]))
listY1.append(float(paraList[4]) - float(paraList[3]))

file.close()

plt.plot(listX,listY,'bo-',listX,listY1,'ro')#画图
plt.title('tile')#设置所绘图像的标题
plt.xlabel('time in sec')#设置x轴名称
plt.ylabel('delays in ms'')#设置y轴名称

plt.show()

⑶ python 分析系统日志

这个不用做计划任务。直接用tail -f 文件名|grep executing too slow

这样就可以了。然后wc统计行数。

如果你一定要用python做。就使用文件对象中的seek方法,移到上次处理的位置。

⑷ 如何使用批处理执行python脚本,并把python脚本的控制台日志输出到一个log文件中

1, 用绝对路径试试:D:\logs\log.txt;
2, 最后的exit去掉试试,反正最后一行执行完也会自然退出。
3, 另写一个简单的python测试脚本,里面只有一行 print 'Hello World', 然后用上述批处理执行一下看看log对不对。

⑸ python网络编程可以用来做什么

下面是Python的应用及岗位。

第一部分:各个领域应用的语言。

四个重要的定位:验证算法、快速开发、测试运维、数据分析。

1、验证算法:就是对我们公司一些常见设计算法或者公式的验证,公式代码化。

2、快速开发:这个大家应该都比较熟悉,快速开发,就是用成熟框架,更少的代码来开发网站,Python在网站前后台有大量的成熟的框架,如django,flask,bottle,tornado,flask和django的使用较多,国内用Python开发的网站有:知乎、豆瓣、扇贝、腾讯、阿里巴巴;

3、测试运维:用python实现的测试工具及过程,包含服务器端、客户端、web、andriod、client端的自动化测试,自动化性能测试的执行、监控和分析,常用selenium appium等
框架。做运维同学应该清楚,在linux运维工作中日常操作涵盖了监控,部署,网络配置,日志分析,安全检测 等等许许多多的方面,无所不包。python可以写很多的脚本,把“操作”这个行为做到极致。与此同时,python在服务器管理工具上非常丰富,配置管理(saltstack) 批量执行( fabric, saltstack) 监控(Zenoss, nagios 插件) 虚拟化管理( python-libvirt) 进程管理 (supervisor) 云计算(openstack) ...... 还有大部分系统C库都有python绑定。

4、数据分析:Python有三大神器:numpy,scipy,matplotlib,其中numpy很多底层使用C语言实现的,所以速度很快,用它参加各种数学建模大赛,完全可以替代r语言和MATLAB。spark,Hadoop都开了Python的接口,所以使用Python做大数据的maprece也非常简单,加上py对数据库支持都很好,或者类似sqlalchemy的orm也非常强大好用。

在结束这个部分之前,大家有没有一个疑问:为什么爬虫没有中重点讲?

其实这里给大家重点说一下,如果你要学好Python,仅仅停留在爬虫上,这个是很不靠谱的。Python 写爬虫的教程网上一抓一大把,据大家所知很多初学 Python 的人都是使用它编写爬虫程序。小到抓取一个小黄图网站,大到一个互联网公司的商业应用。通过 Python 入门爬虫比较简单易学,不需要在一开始掌握太多太基础太底层的知识就可以很快上手,而且很快可以做出成果,非常适合小白一开始想做出点看得见的东西的成就感。

除了入门,爬虫也被广泛应用到一些需要数据的公司、平台和组织,通过抓取互联网上的公开数据,来实现一些商业价值是非常常见的做法。

当然这些选手的爬虫就要厉害的多了,需要处理包括路由、存储、分布式计算等很多问题,与小白的抓黄图小程序,复杂度差了很多倍。

⑹ 如何用python分析网站日志

#coding:utf-8
#file: FileSplit.py

import os,os.path,time

def FileSplit(sourceFile, targetFolder):
sFile = open(sourceFile, 'r')
number = 100000 #每个小文件中保存100000条数据
dataLine = sFile.readline()
tempData = [] #缓存列表
fileNum = 1
if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建
os.mkdir(targetFolder)
while dataLine: #有数据
for row in range(number):
tempData.append(dataLine) #将一行数据添加到列表中
dataLine = sFile.readline()
if not dataLine :
break
tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + str(fileNum) + ".txt")
tFile = open(tFilename, 'a+') #创建小文件
tFile.writelines(tempData) #将列表保存到文件中
tFile.close()
tempData = [] #清空缓存列表
print(tFilename + " 创建于: " + str(time.ctime()))
fileNum += 1 #文件编号

sFile.close()

if __name__ == "__main__" :
FileSplit("access.log","access")
#coding:utf-8
#file: Map.py

import os,os.path,re

def Map(sourceFile, targetFolder):
sFile = open(sourceFile, 'r')
dataLine = sFile.readline()
tempData = {} #缓存列表
if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建
os.mkdir(targetFolder)
while dataLine: #有数据
p_re = re.compile(r'(GET|POST)\s(.*?)\sHTTP/1.[01]',re.IGNORECASE) #用正则表达式解析数据
match = p_re.findall(dataLine)
if match:
visitUrl = match[0][1]
if visitUrl in tempData:
tempData[visitUrl] += 1
else:
tempData[visitUrl] = 1
dataLine = sFile.readline() #读入下一行数据

sFile.close()

tList = []
for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):
tList.append(key + " " + str(value) + '\n')

tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + "_map.txt")
tFile = open(tFilename, 'a+') #创建小文件
tFile.writelines(tList) #将列表保存到文件中
tFile.close()

if __name__ == "__main__" :
Map("access\\access.log1.txt","access")
Map("access\\access.log2.txt","access")
Map("access\\access.log3.txt","access")
#coding:utf-8
#file: Rece.py

import os,os.path,re

def Rece(sourceFolder, targetFile):
tempData = {} #缓存列表
p_re = re.compile(r'(.*?)(\d{1,}$)',re.IGNORECASE) #用正则表达式解析数据
for root,dirs,files in os.walk(sourceFolder):
for fil in files:
if fil.endswith('_map.txt'): #是rece文件
sFile = open(os.path.abspath(os.path.join(root,fil)), 'r')
dataLine = sFile.readline()

while dataLine: #有数据
subdata = p_re.findall(dataLine) #用空格分割数据
#print(subdata[0][0]," ",subdata[0][1])
if subdata[0][0] in tempData:
tempData[subdata[0][0]] += int(subdata[0][1])
else:
tempData[subdata[0][0]] = int(subdata[0][1])
dataLine = sFile.readline() #读入下一行数据

sFile.close()

tList = []
for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):
tList.append(key + " " + str(value) + '\n')

tFilename = os.path.join(sourceFolder,targetFile + "_rece.txt")
tFile = open(tFilename, 'a+') #创建小文件
tFile.writelines(tList) #将列表保存到文件中
tFile.close()

if __name__ == "__main__" :
Rece("access","access")

⑺ linux下对于日志分析统计哪种脚本语言比较好

python或者awk吧, python能做成网站, awk可以直观的做成报表的, 这个都能做到的哦
能否看看wo的网名呢?这个问题可以帮助搞定一下的哦

⑻ 我的的python语言脚本监控的服务器日志,日志出现错误的时候根据错误关键字进行语音告警。可是最近出现

应该是split后生成的列表的原始超过2个了。看下面的简单的例子就知道了。
其实应该看一下生成后的长度,做个保护,否则像你这种赋值,只要列表长度不为2,都会异常。

>>> x=[1,2,3]
>>> a,b=x
Traceback (most recent call last):
File "<interactive input>", line 1, in <mole>
ValueError: too many values to unpack

⑼ python,由于执行脚本要写日志,我需要获取Linux服务器的磁盘利用率等,how

importos
defgetLinuxDiskInfo(path):
ifos.path.exists(path):
vfs=os.statvfs(path)
available=vfs[statvfs.F_BAVAIL]*vfs[statvfs.F_BSIZE]/1024
capacity=vfs[statvfs.F_BLOCKS]*vfs[statvfs.F_BSIZE]/1024
used=capacity-available

returnavailable,used,capacity

returnNone,None,None

⑽ 新手开发 python 运维工具碰到了难题望大神赐教。

自学了一段时间python,感觉可能是我学习的姿势不太对。总是感觉python相比于shell和perl更偏向于web开发。而对linux的运维管理偏弱。

抛开fabric等这类用python开发的运维工具不谈。自己在日常运维中运用python能做些什么?比shell脚本便捷或效率高的地方又体现在哪里?
现在只用python写过部分日志分析脚本和从页面中提取uid生成链接然后测试播放等动作的简单脚本。
其他的就不知道做些什么好了。
想请v2上的前辈多给些指点,如果能有些具体实例就更好不过了。

多谢大家





热点内容
安卓浏览图片如何全屏 发布:2024-05-03 17:24:08 浏览:104
传奇仓库脚本 发布:2024-05-03 17:23:56 浏览:541
2010数据库技术及应用 发布:2024-05-03 17:21:51 浏览:921
小米账号密码忘了怎么 发布:2024-05-03 17:17:44 浏览:780
皇家农场脚本 发布:2024-05-03 16:46:41 浏览:458
顺序存储链式存储 发布:2024-05-03 16:46:41 浏览:879
电脑配置低可以玩什么fps游戏 发布:2024-05-03 16:46:39 浏览:421
qq刷红包脚本 发布:2024-05-03 16:16:54 浏览:769
c服务编译耗时优化原理及实例 发布:2024-05-03 15:35:26 浏览:15
ue编程 发布:2024-05-03 15:34:40 浏览:610