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下使用状态机的教程
Apr 11 Python
Python 25行代码实现的RSA算法详解
Apr 10 Python
python 输出上个月的月末日期实例
Apr 11 Python
python在html中插入简单的代码并加上时间戳的方法
Oct 16 Python
selenium+python环境配置教程详解
May 28 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
Jul 09 Python
python文字转语音实现过程解析
Nov 12 Python
Mac 使用python3的matplot画图不显示的解决
Nov 23 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
Mar 30 Python
Python AutoCAD 系统设置的实现方法
Apr 01 Python
Python日志:自定义输出字段 json格式输出方式
Apr 27 Python
如何用Matplotlib 画三维图的示例代码
Jul 28 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 购物车实例(申精)
2009/05/11 PHP
一个php生成16位随机数的代码(两种方法)
2014/09/16 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
xmlplus组件设计系列之按钮(2)
2017/04/26 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
itchat接口使用示例
2017/10/23 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
Python如何急速下载第三方库详解
2020/11/02 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
法国珠宝店:CLEOR
2017/01/29 全球购物
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
岗位职责怎么写
2014/03/14 职场文书
《记金华的双龙洞》教学反思
2014/04/19 职场文书
公司任命书模板
2014/06/06 职场文书
会计学专业求职信
2014/07/17 职场文书
质量承诺书格式范文
2015/04/28 职场文书
感恩教育观后感
2015/06/17 职场文书
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python