最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python日志增量抓取实现方法

来源:动视网 责编:小OO 时间:2020-11-27 14:21:51
文档

python日志增量抓取实现方法

实例如下所示。,import timeimport pickleimport osimport reclass LogIncScaner(object): def __init__(self,log_file.reg_ex,start to scan';matchs = [] with open(self.log_file.';rb';) as logfd: logfd.seek(seek[';position';],os.SEEK_SET) for match in re.finditer(self.reg_ex.logfd.read()): matchs.append(match) seek = {';time';:time.time()。
推荐度:
导读实例如下所示。,import timeimport pickleimport osimport reclass LogIncScaner(object): def __init__(self,log_file.reg_ex,start to scan';matchs = [] with open(self.log_file.';rb';) as logfd: logfd.seek(seek[';position';],os.SEEK_SET) for match in re.finditer(self.reg_ex.logfd.read()): matchs.append(match) seek = {';time';:time.time()。


下面为大家分享一篇python 日志增量抓取实现方法,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧

实例如下所示:

import time
import pickle
import os
import re
class LogIncScaner(object):
 def __init__(self,log_file, reg_ex,seek_file='/tmp/log-inc-scan.seek.temp'):
 self.log_file = log_file
 self.reg_ex = reg_ex
 self.seek_file = seek_file
 def scan(self):
 seek = self._get_seek()
 file_mtime = os.path.getmtime(self.log_file)
 if file_mtime <= seek['time']:
 print 'file mtime not change since last scan'
 seek['time'] = file_mtime
 self._dump_seek(seek)
 return []
 file_size = os.path.getsize(self.log_file)
 if file_size <= seek['position']:
 print 'file size not change since last scan'
 seek['position'] = file_size
 self._dump_seek(seek)
 return []
 print 'file changed,start to scan'
 matchs = []
 with open(self.log_file, 'rb') as logfd:
 logfd.seek(seek['position'],os.SEEK_SET)
 for match in re.finditer(self.reg_ex, logfd.read()):
 matchs.append(match)
 seek = {'time':time.time(),'position': logfd.tell()}
 print seek
 self._dump_seek(seek)
 return matchs
 def _get_seek(self):
 seek = {'time':time.time(),'position':0}
 if os.path.exists(self.seek_file):
 with open(self.seek_file,'rb') as seekfd:
 try:
 seek = pickle.load(seekfd)
 except:
 pass
 print seek
 return seek
 def _dump_seek(self, seek):
 with open(self.seek_file,'wb') as seekfd:
 pickle.dump(seek,seekfd)
 def reset_seek(self):
 self._dump_seek({'time':time.time(),'position':0})
if __name__ == "__main__":
 scaner = LogIncScaner('/var/log/messages',r'(w+ d+ d+:d+:d+) .+?exception')
 scaner.reset_seek()
 while True:
 matchs = scaner.scan()
 for match in matchs:
 print 'fond at:' + match.group(1) + ' content:' + match.group(0)
 time.sleep(5)

文档

python日志增量抓取实现方法

实例如下所示。,import timeimport pickleimport osimport reclass LogIncScaner(object): def __init__(self,log_file.reg_ex,start to scan';matchs = [] with open(self.log_file.';rb';) as logfd: logfd.seek(seek[';position';],os.SEEK_SET) for match in re.finditer(self.reg_ex.logfd.read()): matchs.append(match) seek = {';time';:time.time()。
推荐度:
标签: 实现 python 抓取
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top