zoukankan      html  css  js  c++  java
  • python-实时分析log文件每秒记录数

    文件名:gencdr.py

    作用:在指定的时间里每秒向testcdr.txt文件中写N行记录,N为随机数。模拟access.log。

    # -*- coding: utf-8 -*-  
    """ 
     zhangbo2012
     http://www.cnblogs.com/zhangbo2012/
    """
    
    import time
    import datetime
    import random
    
    filepath = "testcdr.txt"
    
    def time2yyyymmddhhmiss():
        return datetime.datetime.now().strftime('%Y%m%d%H%M%S')
    
    with open(filepath,'w') as wf:
        for i in range(150):
            time.sleep(1)
            linecnt = int(random.random()*20)
            for i in range(linecnt):
                ol = "%s|%04d|%04d|%04d
    " % (time2yyyymmddhhmiss(),int(random.random()*9999),int(random.random()*9999),i)
                wf.write(ol)
                print ol,
            wf.flush()

    运行效果

    image

    文件名:analyze_cdrfile.py

    作用:    实时分析testcdr.txt文件中的记录,输出每秒记录数。目前配置为延迟30秒输出。

    # -*- coding: utf-8 -*-  
    """ 
     zhangbo2012
     http://www.cnblogs.com/zhangbo2012/
    """
    
    import time
    import datetime
    
    filepath = "testcdr.txt"
    delaysec = 30
    
    seccnt = {}
    timepos = 0
    
    def time2yyyymmddhhmiss():
        return datetime.datetime.now().strftime('%Y%m%d%H%M%S')
    
    def yyyymmddhhmiss2time(yyyymmddhhmiss):
        return time.mktime(time.strptime(yyyymmddhhmiss,'%Y%m%d%H%M%S'))
    
    print "---start---"
    nowrectime='9999999999'
    with open(filepath,'r') as rf:
        for line in rf:
            rectime = str(line).split("|")[timepos]
            if nowrectime<rectime:
                print nowrectime,seccnt[nowrectime]
    
            while (time.time() - yyyymmddhhmiss2time(rectime) < delaysec):
                time.sleep(1)
    
            if rectime in seccnt.keys():
                seccnt[rectime] +=1
            else:
                seccnt[rectime] = 1
    
            nowrectime = rectime
    
    print "---end---"

    运行效果

    image

  • 相关阅读:
    zabbix源码安装
    利用Linux系统生成随机密码的8种方法
    Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
    Jenkins的参数化构建
    Jenkins中maven的作用--构建项目(三)
    Beans(dp,两次dp)
    Piggy-Bank(完全背包)
    Super Jumping! Jumping! Jumping!(dp)
    01串(dp)
    钱币兑换问题(完全背包)
  • 原文地址:https://www.cnblogs.com/zhangbo2012/p/3701597.html
Copyright © 2011-2022 走看看