Python實時監控檔案方法

2021-10-01 16:14:48 字數 2977 閱讀 5226

python

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

12

3

4

5

6

7

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()方法分別得到當前檔案位置和要移動到的位置,**如下:

python

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,

12

3

4

5

6

7

8

9

10

11

12

import

time

file

=open

('access.log'

)while1:

where

=file

.tell()

line

=file

.readline()

if

notline

:time

.sleep(1

)file

.seek

(where

)else

:print

line

,利用python的 yield來實現乙個生成器函式,然後呼叫這個生成器函式,這樣當日誌檔案有變化時就列印新的行,**如下:

python

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,

12

3

4

5

6

7

8

9

10

11

12

13

14

15

16

import

time

def

follow

(thefile):

thefile

.seek(0

,2

)while

true

:line

=thefile

.readline()

if

notline

:time

.sleep

(0.1

)continue

yield

line

if

__name__

=='__main__'

:logfile

=open

("access-log"

,"r"

)loglines

=follow

(logfile

)for

line

inloglines

:print

line

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

以上就是三個常用方法,具體日誌分析的**大家可以根據自己的業務邏輯去實現,完畢。

5868037 qq號

[email protected] qq郵箱

inotify非同步檔案實時監控

inotify是linux核心提供的一組系統呼叫,它可以監控檔案系統操作,比如檔案或者目錄的建立 讀取 寫入 許可權修改和刪除等。inotify使用也很簡單,使用inotify init建立乙個控制代碼,然後通過inotify add watch inotify rm watch增加 刪除對檔案和目...

inotifywait實時監控檔案目錄

inotify 是一種強大的 細粒度的 非同步檔案系統監控機制,它滿足各種各樣的檔案監控需要,可以監控檔案系統的訪問屬性 讀寫屬性 許可權屬性 建立刪除 移動等操作,也可以監控檔案發生的一切變化。inotify tools 是乙個c庫和一組命令列的工作提供linux下inotify的簡單介面。ino...

Python3實時監控SOLR Replica狀態

os 版本 centos linux release 7.4.1708 python 版本 python 3.7.3 solr 版本 solr 7.5 solr 執行模式 solr cloud 集群模式 1solr的客戶端api,提供了乙個監控clusterstatus的介面。並且,包含乙個專門用於...