python實現(xiàn)定時提取實時日志程序
本文實例為大家分享了python定時提取實時日志的具體代碼,供大家參考,具體內(nèi)容如下
這是一個定時讀取 實時日志文件的程序。目標(biāo)文件是target_file. 它是應(yīng)用程序?qū)崟r寫入的。
我要做的是,每個5秒鐘,提取一次該日志文件中的內(nèi)容,然后生成另一個文件,最后把這些文件都匯總。
#!/usr/local/bin/python
# coding:utf-8
import fileinput
import time
import os
target_file = 'user.log'
init_flag = True # 初次加載程序
time_kick = 5
record_count = 0
while True:
print '當(dāng)前讀到了', record_count
#沒有日志文件,等待
if not os.path.exists(target_file):
print 'target_file not exist'
time.sleep(time_kick)
continue
try:
ip = '10.10.1.100'
easytime = time.strftime('%Y%m%d_%H%M%S', time.localtime())
file_name = '%s_user_%s.log' % (ip,easytime)
f_w = open(file_name, 'w')
if init_flag:
#讀取整個文件
for eachline in fileinput.input(target_file):
print eachline
f_w.write(eachline)
record_count += 1
init_flag = False
else:
#如果總行數(shù)小于當(dāng)前行,那么認為文件更新了,從第一行開始讀。
total_count = os.popen('wc -l %s' % target_file).read().split()[0]
total_count = int(total_count)
if total_count < record_count:
record_count = 0
for eachline in fileinput.input(target_file):
line_no = fileinput.filelineno()
if line_no > record_count:
print eachline
f_w.write(eachline)
record_count += 1
f_w.close()
except:
pass
time.sleep(time_kick)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python下載商品數(shù)據(jù)并連接數(shù)據(jù)庫且保存數(shù)據(jù)
這篇文章主要介紹了Python下載商品數(shù)據(jù)并連接數(shù)據(jù)庫且保存數(shù)據(jù),包括發(fā)送請求、獲取數(shù)據(jù)、解析數(shù)據(jù)(篩選數(shù)據(jù))、保存數(shù)據(jù)、連接數(shù)據(jù)庫等內(nèi)容,需要的小伙伴可以參考一下2022-03-03
python條件變量之生產(chǎn)者與消費者操作實例分析
這篇文章主要介紹了python條件變量之生產(chǎn)者與消費者操作,結(jié)合具體實例形式分析了Python條件變量的概念、原理、及線程操作的相關(guān)技巧,需要的朋友可以參考下2017-03-03
Python實現(xiàn)判斷給定列表是否有重復(fù)元素的方法
這篇文章主要介紹了Python實現(xiàn)判斷給定列表是否有重復(fù)元素的方法,列舉了2種列表判斷方法,涉及Python針對列表的遍歷、統(tǒng)計、判斷等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04
在Python中封裝GObject模塊進行圖形化程序編程的教程
這篇文章主要介紹了在Python中封裝GObject模塊進行圖形化程序編程的教程,本文來自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下2015-04-04

