當前位置:首頁 » 編程軟體 » 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-04-20 14:24:14 瀏覽:379
緩存美劇權力的游戲 發布:2024-04-20 14:16:52 瀏覽:987
如何刪除word文件保存密碼 發布:2024-04-20 14:15:18 瀏覽:824
紅米安卓10如何降級到安卓9 發布:2024-04-20 14:13:25 瀏覽:30
ftp目錄遍歷 發布:2024-04-20 13:58:37 瀏覽:970
mysql存儲過程的數組 發布:2024-04-20 13:58:33 瀏覽:60
怎麼樣更改無線網密碼 發布:2024-04-20 13:53:23 瀏覽:883
python用戶 發布:2024-04-20 13:51:46 瀏覽:748
光遇蘋果如何下載安卓服 發布:2024-04-20 13:40:03 瀏覽:460
半歲學編程 發布:2024-04-20 13:17:53 瀏覽:217