V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
polandeme
V2EX  ›  问与答

Python 处理 log 入库

  •  1
     
  •   polandeme · 2017-08-10 20:01:30 +08:00 · 2089 次点击
    这是一个创建于 2646 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有多个日志文件,单个文件不是太大(<50 ) M,每条日志都打有时间戳,想着想取出某条记录格式是: [timestamp]xxxxxxaaabbbcc:{json 格式数据}, 要取得点是时间戳和 json 格式中的数据。

    现在的做法是想比较粗暴的按行遍历文件,找到这一行,按照关键词提取信息,然后入库。

    对 python 不熟悉,没有太多这方面的经验。

    想问一下有没有更好的方案或者合适的库?

    7 条回复    2017-08-11 08:50:08 +08:00
    shiroming
        1
    shiroming  
       2017-08-10 20:25:56 +08:00 via Android
    正则匹配呗
    polandeme
        2
    polandeme  
    OP
       2017-08-10 20:26:19 +08:00
    @shiroming 一行一行读,然后正则匹配?
    shiroming
        3
    shiroming  
       2017-08-10 20:51:57 +08:00 via Android
    😏50m 一次读才简单粗暴
    ipwx
        4
    ipwx  
       2017-08-10 20:56:16 +08:00
    才 50MB。。

    读进来,然后 re.findall 或者 re.finditer 都可以
    billlee
        5
    billlee  
       2017-08-10 22:15:11 +08:00
    正则是没问题的。除此之外用 logstash 也是可以的吧
    polandeme
        6
    polandeme  
    OP
       2017-08-10 23:26:54 +08:00
    @billlee 功能点比较小,没用过 logstash,有必要去用么?
    guiqiqi
        7
    guiqiqi  
       2017-08-11 08:50:08 +08:00 via iPhone
    如果日志格式是固定的,输出也是按照时间,私以为想要查找可以采取二分的办法,也许能节约点时间。
    另外 re 的效率好像不是很高,50M 应该还是可以的,但是在大好像不好使了,如果按行遍历,也许 startswith 快一点。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5211 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:15 · PVG 09:15 · LAX 17:15 · JFK 20:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.