pythonlog分析
❶ pythonval-log是什麼意思
python 代碼中log表示含義
log表示以e為底數的對數函數符號。其驗證代碼如下:
a=np.log(np.e )
print(a)
print(np.e)
❷ 如何用 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數據分析(八):農糧組織數據集探索性分析(EDA)
這里我們用 FAO(Food and Agriculture Organization) 組織提供的數據集,練習一下如何利用python進行探索性數據分析。
我們先導入需要用到的包
接下來,載入數據集
看一下數據量,
看一下數據的信息,
我們先來看一下variable,variable_full這兩列的信息,
看一下統計了多少國家,
看一下有多少個時間周期,
看一下時間周期有哪些,
我們看一下某一列某個指標的缺失值的個數,比如variable是total_area時缺失值的個數,
我們通過幾個維度來進行數據的分析:
我們按照上面的處理繼續,現在我們想統計一下對於一個時間周期來說,不同國家在這個周期內的變化情況,
我們也可以按照國家分類,查看某個國家在不同時期的變化,
我們還可以根據屬性,查看不同國家在不同周期內的變化情況,
我們還可以給定國家和指標,查看這個國家在這個指標上的變化情況,
我們還有region(區域)沒有查看,我們來看一下:
通過上圖可以看出,區域太多,不便於觀察,我們可以將一些區域進行合並。減少區域數量有助於模型評估,可以創建一個字典來查找新的,更簡單的區域(亞洲,北美洲,南美洲,大洋洲)
我們來看一下數據變化,
緊接著上面的數據處理,我們重新導入一下包,這次有一些新包,
我們看一下水資源的情況,
通過上圖可以看出只有一小部分國家報告了可利用的水資源總量,這些國家中只有極少數國家擁有最近一段時間的數據,我們將刪除變數,因為這么少的數據點會導致很多問題。
接下來我們看一下全國降雨指數,
全國降雨在2002年以後不再報到,所以我們也刪除這個數據,
我們單獨拿出一個洲來進行分析,舉例南美洲,我們來看一下數據的完整性,
我們也可以指定不同的指標,
接下來,我們使用 pandas_profiling 來對單變數以及多變數之間的關系進行統計一下,
這里我們要計算的是,比如
我們按照 rural_pop 從小到大進行排序,發現的確有幾個國家的農村人口是負數,
人口數目是不可能小於0,所以這說明數據有問題,存在臟數據,如果做分析預測時,要注意將這些臟數據處理一下。
接下來我們看一下偏度,我們規定,
正態分布的偏度應為零,負偏度表示左偏,正偏表示右偏。
偏度計算完後,我們計算一下峰度, 峰度也是一個正態分布,峰度不能為負,只能是正數 ,越大說明越陡峭,
接下來我們看一下,如果數據分布非常不均勻該怎麼辦呢,
上圖是2013-2017年國家總人數的分布,通過上圖我們發現,人口量少於200000(不考慮單位)的國家非常多,人口大於1200000的國家非常少,如果我們需要建模的話,這種數據我們是不能要的。這個時候我們應該怎麼辦呢?
通常,遇到這種情況,使用 log變換 將其變為正常。 對數變換 是數據變換的一種常用方式,數據變換的目的在於使數據的呈現方式接近我們所希望的前提假設,從而更好的進行統計推斷。
接下來,我們用log轉換一下,並看一下它的偏度和峰值,
可以看出偏度下降了很多,減少了傾斜。
可以發現峰度也下降了,接下來我們看一下經過log轉換後的數據分布,
雖然數據還有一些偏度,但是明顯好了很多,呈現的分布也比較標准。
首先我們先來看一下美國的人口總數隨時間的變化,
接下來,我們查看北美洲每個國家人口總數隨著時間的變化,
這個時候我們發現,一些國家由於人口數量本身就少,所以整個圖像顯示的不明顯,我們可以改變一下參照指標,那我們通過什麼標准化?我們可以選擇一個國家的最小、平均、中位數、最大值...或任何其他位置。那我們選擇最小值,這樣我們就能看到每個國家的起始人口上的增長。
我們也可以用熱度圖來展示,用顏色的深淺來比較大小關系,
接下來我們分析一下水資源的分布情況,
我們可以進行一下log轉換,
我們用熱度圖畫一下,
連續值可以畫成散點圖,方便觀看,
我們來看一下隨著季節變化,人均GDP的變化情況,
相關程度:
相關度量兩個變數之間的線性關系的強度,我們可以用相關性來識別變數。
現在我們單獨拿出來一個指標分析是什麼因素與人均GDP的變化有關系,正相關就是積極影響,負相關就是消極影響。
當我們在畫圖的時候也可以考慮一下利用bined設置一下區間,比如說連續值我們可以分成幾個區間進行分析,這里我們以人均GDP的數量來進行分析,我們可以將人均GDP的數據映射到不同的區間,比如人均GDP比較低,比較落後的國家,以及人均GDP比較高,比較發達的國家,這個也是我們經常需要的操作,
做一下log變換,這里是25個bin
我們指定一下分割的標准,
我們還可以看一下人均GDP較低,落後國家的內部數據,下面我們看一下內部數據分布情況,用boxplot進行畫圖,
對於這部分的分布,我們還可以統計看一下其他指標,如下圖所示,我們還可以看一下洪水的統計信息,
❹ python按行(一行就是一條)統計每5分鍾有多少條log數據
暗航統計每5分鍾有多少條log數據,那大概的話一一行就是一條的話,5分鍾的話大概會有3000多條。
❺ python中log_inner啥意思
python中log_inner是log表示以e為底數的對數函數符號。
在數學運算中,如果沒有計算器,對於很大的數字相乘,我們花費大量的時間計算,而且一旦出錯,就要重新計算,很是麻煩。其實對於數字相乘,不依靠靠計算器,想要准確簡單的運算的方法不是沒有,那就是對數和指數,他們解決了大數或非常的小的數相乘的繁瑣計算。而在python中,也有計算對數的方法,那就是對數函數log函數。本文將向大家介紹log函數的表述語句、參數和返回值,並以實例演示用log函數計算對數的過程。log()函數:返回 x 的自然對數。即返回以 2 為基數的 x 的對數。
Python由荷蘭數學和計算機科學研究學會的吉多·范羅蘇姆 於1990 年代初設計,作為一門叫做ABC語言的替代品。Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用於獨立的、大型項目的開發。Python解釋器易於擴展,可以使用C語言或C++(或者其他可以通過C調用的語言)擴展新的功能和數據類型。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")
❼ python中log文件和txt文件的區別
沒區別啊。
log.txt是txt文件。
run.log是log文件。但兩個只是後綴格式的不同。都是普通文本文件。沒什麼特別的。
log是日誌的意思
❽ python腳本分析/var/log/secure登錄日誌並處理
因為自己有伺服器,發現/var/log/secure 日誌中最近出現大量驗證失敗的日誌,故找了個腳本跑了下,具體如下
創建成功後給腳本加執行許可權後即可運行,默認將失敗IP錯誤次數達到50次以上的就會加入到/etc/hosts.deny中進行拒絕連接處理。
建議將腳本增加crontab 定時任務自動處理,間隔10分鍾處理一次
❾ python 按照固定格式輸出的log怎樣反向解析
根據P值,應接受原假設,不存在自相關。
❿ Python 讀取log文件並提取錯誤信息的功能,不知道如何實現
樓 下的回答提從zipfile里讀取文件,至於lovejie1214問的是如果用正則表達式提取。
統計數據及類型需要一個dict,
讀日誌通常可以用csv提高速度。因為不知道你的文件格式這里不好直接寫程序。
types={}
while not_end:
line=fp.readline()
m=re.search("(?isu)Short Msg:(.*)",line)
if m:
try:
types[m.group(1).strip()]+=1
except KeyError:
types[m.group(1).strip()]=1
for k in types:
print k,types[k]