欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實現實時監(jiān)控文件的方法

 更新時間:2016年08月26日 15:14:25   投稿:lijiao  
這篇文章主要為大家詳細介紹了python實現實時監(jiān)控文件的3種方法,感興趣的小伙伴們可以參考一下

在業(yè)務穩(wěn)定性要求比較高的情況下,運維為能及時發(fā)現問題,有時需要對應用程序的日志進行實時分析,當符合某個條件時就立刻報警,而不是被動等待出問題后去解決,比如要監(jiān)控nginx的$request_time和$upstream_response_time時間,分析出最耗時的請求,然后去改進代碼,這時就要對日志進行實時分析了,發(fā)現時間長的語句就要報警出來,提醒開發(fā)人員要關注,當然這是其中一個應用場景,通過這種監(jiān)控方式還可以應用到任何需要判斷或分析文件的地方,所以今天我們就來看看如何用python實現實時監(jiān)控文件,我給三個方法實例::

第一種:

這個是最簡單的和容易理解的,因為大家都知道linux下有tail命令,所以你可以直接用Popen()函數去調用這個命令來執(zhí)行獲取輸出,代碼如下:

logfile='access.log'
command='tail -f ‘+logfile+'|grep “timeout”‘
popen=subprocess.Popen(command,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
while True:
line=popen.stdout.readline().strip()
print line

第二種:

采用python對文件的操作來實現,用文件對象的tell(), seek()方法分別得到當前文件位置和要移動到的位置,代碼如下:

import time
file = open(‘access.log')
while 1:
where = file.tell()
line = file.readline()
if not line:
time.sleep(1)
file.seek(where)
else:
print line,

第三種:

利用python的 yield來實現一個生成器函數,然后調用這個生成器函數,這樣當日志文件有變化時就打印新的行,代碼如下:

import time
def follow(thefile):
thefile.seek(0,2)
while True:
line = thefile.readline()
if not line:
time.sleep(0.1)
continue
yield line
if __name__ == ‘__main__':
logfile = open(“access-log”,”r”)
loglines = follow(logfile)
for line in loglines:
print line,

最后解釋下seek()函數的用法,這個函數接收2個參數:file.seek(off, whence=0),從文件中移動off個操作標記(文件指針),正數往結束方向移動,負數往開始方向移動。如果設定了whence參數,就以whence設定的起始位為準,0代表從頭開始,1代表當前位置,2代表文件最末尾位置。

以上就是三個常用方法,具體日志分析的代碼大家可以根據自己的業(yè)務邏輯去實現,完畢。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python中幾種操作字符串的方法的介紹

    Python中幾種操作字符串的方法的介紹

    這篇文章主要介紹了詳解Python中幾種操作字符串的方法,字符串的操作是Python學習中最基礎的基礎知識,需要的朋友可以參考下
    2015-04-04
  • pandas數據處理基礎之篩選指定行或者指定列的數據

    pandas數據處理基礎之篩選指定行或者指定列的數據

    這篇文章主要介紹了pandas數據處理基礎之篩選指定行或者指定列的數據的相關資料,需要的朋友可以參考下
    2018-05-05
  • 教你用python3根據關鍵詞爬取百度百科的內容

    教你用python3根據關鍵詞爬取百度百科的內容

    這篇文章介紹的是利用python3根據關鍵詞爬取百度百科的內容,注意本文用的是python3版本以及根據關鍵詞爬取,爬取也只是單純的爬網頁信息,有需要的可以參考借鑒。
    2016-08-08
  • 利用Python+阿里云實現DDNS動態(tài)域名解析的方法

    利用Python+阿里云實現DDNS動態(tài)域名解析的方法

    這篇文章主要介紹了利用Python+阿里云實現DDNS動態(tài)域名解析的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • python一些性能分析的技巧

    python一些性能分析的技巧

    這篇文章主要介紹了python一些性能分析的技巧,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-08-08
  • Python竟能畫這么漂亮的花,帥呆了(代碼分享)

    Python竟能畫這么漂亮的花,帥呆了(代碼分享)

    這篇文章主要介紹了用Python作圖的一個簡單實例,通過turtle模塊實現作圖,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • python密碼學Base64編碼和解碼教程

    python密碼學Base64編碼和解碼教程

    這篇文章主要為大家介紹了python密碼學Base64編碼和解碼教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • django報錯設置auth User的解決

    django報錯設置auth User的解決

    本文主要介紹了django報錯設置auth User的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • 如何利用Python 進行邊緣檢測

    如何利用Python 進行邊緣檢測

    本文主要介紹了關于邊緣檢測的知識,包括邊緣檢測的理論以及如何使用 Python 實現邊緣檢測,希望對您的學習有所幫助。
    2020-10-10
  • 關于python處理大型json文件的方法

    關于python處理大型json文件的方法

    這篇文章主要介紹了python處理大型json文件的方法,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03

最新評論