python --日志分析

import datetime
import re
#def convert_time(timestr):
#    return datetime.datetime.strptime(timestr, "%d/%b/%Y:%H:%M:%S %z")

#def convert_request(request:str):
#    return dict(zip((‘method‘,‘url‘,‘protocol‘),request.split()))

def extract(line):
    #pattern = ‘‘‘(?P<http_cdn_src_ip>[\d\.]{7,}) - - \[(?P<time_local>[^\[\]])\] "(?P<request>[^"])" (?P<status>\d+) (?P<body_bytes_sent>\d+) "-" "(?P<http_user_agent>[^"])" - [\d\.]{7,} \d.\d+ [\d\.]{7,}:\d+ \d.\d+‘‘‘
    #regex = re.compile(pattern)
    p=‘‘‘(?P<http_cdn_src_ip>[\d\.]{7,}) - - \[(?P<time_local>[^\[\]]+)\] "(?P<request>[^"]+)" (?P<status>\d+) (?P<body_bytes_sent>\d+) "-" "(?P<http_user_agent>[^"]+)"‘‘‘
    mat=re.match(p,line)
    #matcher=regex.search(line)
    if mat is not None:
      d = mat.groupdict()
      print(d)
    else:
      print("re.search() returned None")
    return d

names = [‘http_cdn_src_ip‘,‘-‘,‘remote_user‘,‘time_local‘,‘request‘,
        ‘status‘,‘body_bytes_sent‘,‘http_referer‘,
        ‘http_user_agent‘,
        ‘http_x_forwarded_for‘, ‘remote_addr‘,
        ‘request_time‘,‘upstream_addr‘,‘upstream_response_time‘]

ops={‘time_local‘:lambda timestr:datetime.datetime.strptime(timestr, "%d/%b/%Y:%H:%M:%S %z"),
     ‘request‘:lambda request:dict(zip((‘method‘,‘url‘,‘protocol‘),request.split())),
     ‘status‘:int,
     ‘body_bytes_sent‘:int,
}

log_data=‘‘‘1.24.17.6 - - [07/Dec/2017:15:55:07 +0800] "GET /tch/ApchReprt/getAllon HTTP/1.1" 200 113 "-" "Mozilla/5.0 (Linux; Android 6.0.1; OPPO R9s Build/MMB29M; wv)\ AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043015 \Safari/537.36 V1_AND_SQ_6.6.9_482_YYB_D QQ/6.6.9.3060 NetType/4G WebP/0.3.0 Pixel/1080" - 68.20.3.21 0.058 127.0.0.1:1111 0.014‘‘‘

d={}
#dd={k:ops.get(k, lambda x:x)(v) for k,v in extract(log_data).items()}
for k,v in extract(log_data).items():
    if not ops.get(k):
       d[k]=v
    else:
       d[k] = ops.get(k)(v)
    #try:
    #   d[k] = ops.get(k)(v)
    #except:
    #   d[k]=v

print(d)

  

原文地址:https://www.cnblogs.com/kuku0223/p/12177083.html

时间: 2024-11-01 22:46:08

python --日志分析的相关文章

python日志分析

微秒   毫秒 datetime seek定位指针 从行尾到行首 fd.seek(-2,1)  1  当前位置 fd.tell() fd.seek(-2,2)  2   最后位置 fd.tell() fd.seek(0,0)   0  最前位置 read(1)读一位    read() 全部都读 tac与cat    行首到行尾 reversed   翻转字符串 只读一部分    通过时间判断 200 404  503  十分钟之内   第八列  apache.log 1.首先匹配时间格式, D

Python日志分析与正则表达式

程序员经常会面临日志的分析工作.而正则表达式是处理日志的必备工具. "Line 622: 01-01 09:04:16.727 <6> [pid:14399, cpu1 dabc_pwym_task] [histbf] update_freeze_data: dabc9:bl_level=1740" "app_log_cat new log begin" "Line 627: 01-01 09:04:17.727 <6> [pid:

Python写WEB日志分析程序的一些思路

1.背景 刚到一家公司需要写一个实时分析tshark捕捉到的数据,tshark一直往文本里面写数据,写一个程序要实时获取到添加的数据并进行分析处理最后入库.此时思绪狂飞,想了一些比较挫的方法. 本人想到的方法: 1.每隔一定时间去查看下文件的mtime,如果有改动则读取数据,并记录读取的行数.下次再去读这个文件的数据则上次记录的行数开始继续读.当文件行数太大的时候这个程序的效率就很慢了,也可以记录上次读取的字节数,然后使用linux下的open系统系统中的seek从指定位置处读取.但是要是用C语

PYTHON上海分享活动小记---SQUID日志分析项目开发

上周末有幸跑到上海为小伙伴们分享了<SQUID日志分析项目>,主要是带大家用PYTHON迅速实现一个SQUID日志分析平台的前后端开发,一天的课程太紧张,导致有些细节不能完全实现,但整体思路啥的基本都OK啦,可惜的是由于电脑没配置好,导致没法录像....,要不然就可以放到网上与大家一起分享了,现在只能上几张图了... 最后感谢 波波同学,无偿负责组织策划了这次分享活动,感谢柏林,提供场地支持. 感谢大家花周末时间参加这个活动,希望此次分享对各位有所帮助.. PYTHON上海分享活动小记---S

python 经典语句日志分析

#!/usr/bin/python import re def buffer_line(): buf = open("/etc/sae/buffer_1").read() if not buf: return 0 else: return int(re.findall("^\d*", buf)[0]) def set_last_pos(pos): open("/etc/sae/buffer_1", "w").write(str

python简单日志分析

其实Python编程语言(http://www.maiziedu.com/course/python-px/)功能很强大,能对网站进行Apache日志分析,从运营的角度如果一个只做内容的网站只看访问量是不够的,还需要关注用户打开的那些网站地址最多,打开的地址越多表明这个文章就是热点文章,最开始的自动标热功能就是这么来的,所以一般公司都会有详细的后台统计系统,不过对我们一般人来说,如果只是自己搭建个小站,实在没必要去再开发个系统,当然用第三方的统计系统也能解决问题,关键就看你放不放心了,假如我要看

Python第七课----正则和日志分析

一.正则表达式: 1.分类:     1.BRE基本正则,grep.sed,vi等软件支持,vim有扩展   2.ERE扩展正则,egrep.grep-E,sed-r等    3.PCRE最重要的,高级语言中的 2.基本语法:   1.元字符 metacharacter . 匹配除了换行符外任意一字符,迭代所有 . [abc] 字符"集合",只能从中拿出一个,然后一个个匹配一个位置 plain,匹配出a [^abc] 字符集合,表示一个字符位置,匹配非abc plain,匹配出plin

Python+MySQL实现web日志分析

(本文已不再同步更新,最新代码请见github)日志分析在web系统中故障排查.性能分析方面有着非常重要的作用.目前,开源的ELK系统是成熟且功能强大的选择.但是部署及学习成本亦然不低,这里我实现了一个方法上相对简单(但准确度和效率是有保证的)的实现.另外该脚本的侧重点不是通常的PV,UV等展示,而是短期内(如三天历史or一周历史)提供细粒度的异常和性能分析. 先说一下我想实现这个功能的驱动力(痛点)吧:我们有不少站点,前边有CDN,原站前面是F5,走到源站的访问总量日均PV约5000w.下面是

#IT明星不是梦#利用Python进行网站日志分析

网站的访问日志是一个非常重要的文件,通过分析访问日志,能够挖掘出很多有价值的信息.本文介绍如何利用Python对一个真实网站的访问日志进行分析,文中将综合运用Python文件操作.字符串处理.列表.集合.字典等相关知识点.本文所用的访问日志access_log来自我个人的云服务器,大家可以从文末的附件中下载. 1.提取指定日期的日志 下面是一条典型的网站访问日志,客户端访问网站中的每个资源都会产生一条日志. 193.112.9.107 - - [25/Jan/2020:06:32:58 +080