python 日志增量抓取实现方法


Posted in Python onApril 28, 2018

实例如下所示:

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 日志增量抓取实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
从零学Python之入门(二)基本数据类型
May 25 Python
Python时间模块datetime、time、calendar的使用方法
Jan 13 Python
python实现简单购物商城
May 21 Python
python实现折半查找和归并排序算法
Apr 14 Python
python3+PyQt5实现自定义分数滑块部件
Apr 24 Python
PyQt5+requests实现车票查询工具
Jan 21 Python
Python理解递归的方法总结
Jan 28 Python
python绘图模块matplotlib示例详解
Jul 26 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
Oct 17 Python
Python全局锁中如何合理运用多线程(多进程)
Nov 06 Python
Python析构函数__del__定义原理解析
Nov 20 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
Mar 04 Python
Django 使用logging打印日志的实例
Apr 28 #Python
python实现log日志的示例代码
Apr 28 #Python
Python学习笔记之open()函数打开文件路径报错问题
Apr 28 #Python
Python之读取TXT文件的方法小结
Apr 27 #Python
如何利用python查找电脑文件
Apr 27 #Python
Python3 中把txt数据文件读入到矩阵中的方法
Apr 27 #Python
python Spyder界面无法打开的解决方法
Apr 27 #Python
You might like
PHP中设置时区方法小结
2012/06/03 PHP
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
解决出现SoapFault (looks like we got no XML document)的问题
2017/06/24 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
JScript中的&quot;this&quot;关键字使用方式补充材料
2007/03/08 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
vue router 传参获取不到的解决方式
2019/11/13 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
Django之路由层的实现
2019/09/09 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
冰淇淋店创业计划书范文
2013/12/27 职场文书
商场总经理岗位职责
2014/02/03 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
本科毕业生自荐信
2014/06/02 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL