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正则表达式的使用范例详解
Aug 08 Python
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 Python
python 排序算法总结及实例详解
Sep 28 Python
初学python的操作难点总结(新手必看篇)
Aug 03 Python
Python中if elif else及缩进的使用简述
May 31 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
Jul 09 Python
python 的 scapy库,实现网卡收发包的例子
Jul 23 Python
python下PyGame的下载与安装过程及遇到问题
Aug 04 Python
Python解析json代码实例解析
Nov 25 Python
tensorflow实现将ckpt转pb文件的方法
Apr 22 Python
Python 跨.py文件调用自定义函数说明
Jun 01 Python
Python 日期与时间转换的方法
Aug 01 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
3.从实例开始
2006/10/09 PHP
再次研究下cache_lite
2007/02/14 PHP
php allow_url_include的应用和解释
2010/04/22 PHP
PHP递归调用的小技巧讲解
2013/02/19 PHP
PHP函数之日期时间函数date()使用详解
2013/09/09 PHP
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
php字符串函数学习之substr()
2015/03/27 PHP
javascript中的3种继承实现方法
2016/01/27 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
Vue+element+cookie记住密码功能的简单实现方法
2020/09/20 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
浅谈Python中列表生成式和生成器的区别
2015/08/03 Python
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
keras 解决加载lstm+crf模型出错的问题
2020/06/10 Python
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
《美丽的田园》教学反思
2014/03/01 职场文书
创先争优承诺书范文
2014/03/31 职场文书
教师业务培训方案
2014/05/01 职场文书
预备党员转正考核材料
2014/06/03 职场文书
学校安全责任书范本
2014/07/23 职场文书
基层党支部承诺书
2015/04/30 职场文书
导游词之无锡梅园
2019/11/28 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技
MySQL空间数据存储及函数
2021/09/25 MySQL