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获取文件版本信息、公司名和产品名的方法
Oct 05 Python
使用Python导出Excel图表以及导出为图片的方法
Nov 07 Python
django 按时间范围查询数据库实例代码
Feb 11 Python
python图书管理系统
Apr 05 Python
python ftp 按目录结构上传下载的实现代码
Sep 12 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
Nov 15 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
Jan 29 Python
Python 一键制作微信好友图片墙的方法
May 16 Python
安装python及pycharm的教程图解
Oct 10 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 Python
python实现无边框进度条的实例代码
Dec 30 Python
python自动化八大定位元素讲解
Jul 09 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开发负载均衡指南
2010/07/17 PHP
php自动获取关键字的方法
2015/01/06 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
php抛出异常与捕捉特定类型的异常详解
2016/10/26 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
PHP与以太坊交互详解
2018/08/24 PHP
Js动态创建div
2008/09/25 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
[02:42]DOTA2英雄基础教程 杰奇洛
2013/12/23 DOTA
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
Python多进程并发与多线程并发编程实例总结
2018/02/08 Python
Python求解任意闭区间的所有素数
2018/06/10 Python
python如何实现一个刷网页小程序
2018/11/27 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
Python3内置模块之base64编解码方法详解
2019/07/13 Python
pandas如何处理缺失值
2019/07/31 Python
基于python实现复制文件并重命名
2020/09/16 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
文职个人求职信范文
2013/09/23 职场文书
致铅球运动员广播稿精选
2014/01/12 职场文书
文秘大学生求职信
2014/02/25 职场文书
安卓程序员求职信
2014/02/28 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书