【数据平台】Python解析Ngnix日志
场景:Ngnix格式具有一定格式,通过python的正则表达式读取日志中每行的字段。
Python正则表达式参考:https://docs.python.org/2/library/re.html
代码参考:
# -*- coding: utf-8 -*-
'''
Created on 2018年1月4日@author: Jason.F
@summary: Ngnix log parse
'''
import time
import re
class NgnixLogParse(object):def __init__(self,logline):self.logline=logline'''log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" "$upstream_addr" "$request_time" "$upstream_response_time" $host';'''def logparse(self):#正则表达式ip = r"?P<ip>[\d.]*"
#timelocal = r"?P<timelocal>\[.*\]" #拆解成date、month、year、log_time
user =r"?P<user>\S+"
date = r"?P<date>\d+"
month = r"?P<month>\w+"
year = r"?P<year>\d+"
log_time = r"?P<time>\S+"
#request = r"?P<request>[^\"]*" #拆解成method、request、portocal
method = r"?P<method>\S+"
request = r"?P<request>\S+"
protocal=r"?P<protocal>\S+"
status = r"?P<status>\d+"
bodyBytesSent = r"?P<bodyBytesSent>\d+"
referer=r"?P<referer>\S+"
user_agent = r"?P<user_agent>[^\"]*"
forwardedfor=r"?P<forwardedfor>\S+"
upstream_addr = r"?P<upstream_addr>.*"
requesttime=r"?P<requesttime>.*"
responsetime=r"?P<responsetime>.*"
host = r"?P<host>\S+"
p=re.compile(r"(%s)\s-\s(%s)\s\[(%s)/(%s)/(%s)\:(%s)\s[\S]+\]\s\"(%s)\s(%s)\s(%s)\"\s(%s)\s(%s)\s\"(%s)\"\s\"(%s)\"\s\"(%s)\"\s\"(%s)\"\s\"(%s)\"\s\"(%s)\"\s(%s) " \
%(ip,user,date,month,year,log_time,method,request,protocal,status,bodyBytesSent,referer,user_agent,forwardedfor,upstream_addr,requesttime,responsetime,host),re.VERBOSE)
m = re.findall(p, self.logline)return mif __name__ == "__main__": start = time.clock() logline='11.11.7.21 - - [22/Nov/2017:00:28:46 +0800] "POST /xyz/qn_cb HTTP/1.1" 200 218 "-" "qiniu-callback/1.0" "-" "1.25.69.11:8080" "0.008" "0.008" x.163.com'nlp=NgnixLogParse(logline)m=nlp.logparse()print (m)print (m[0][6])end = time.clock() print('finish all in %s' % str(end - start))
执行结果:
[('11.11.7.21', '-','22', 'Nov', '2017', '00:28:46', 'POST', '/xyz/qn_cb', 'HTTP/1.1', '200', '218', 'qiniu-callback/1.0', '-','1.25.69.11:8080', '0.008', '0.008', 'x.163.com')]
/xyz/qn_cb
finish all in 0.00115241167476
【数据平台】Python解析Ngnix日志相关推荐
- Python 解析log日志
Python 解析log日志 软件环境 环境搭建 待解析log日志格式 log解析脚本 解析后文本格式 软件环境 软件 版本 作用 Ubuntu 20.04 操作系统 python 3.8.10 py ...
- 使用Python解析nginx日志文件
项目的一个需求是解析nginx的日志文件. 简单的整理如下: 日志规则描述 首先要明确自己的Nginx的日志格式,这里采用默认Nginx日志格式: log_format main '$remote_a ...
- 【script】python 解析 Windows日志(python-evtx)
Windows日志 模块安装 pip install python-evtx Windows日志 解析源码 源码 import mmap import contextlib import dateti ...
- 2022北京冬奥会竞赛日程表以及json数据与python解析
说明 看完开幕式很自豪,特意整理了一波数据,开源给大家使用 效果展示 # print(get_Winter_Olympics_schedule("02/05")) # 指定日期pr ...
- python解析tcp数据包-python解析获取发往本机的数据包并打印
1.[文件] tcp.py ~ 2KB 下载(69) # -*- coding: cp936 -*- import socket from struct import * from time impo ...
- Python 解析构建数据大杂烩 -- csv、xml、json、excel
Python 可以通过各种库去解析我们常见的数据.其中 csv 文件以纯文本形式存储表格数据,以某字符作为分隔值,通常为逗号:xml 可拓展标记语言,很像超文本标记语言 Html ,但主要对文档和数据 ...
- 大数据平台架构浅析——以讯飞大数据平台Odeon为例
文章目录 大数据平台架构解析--以讯飞大数据平台Odeon为例 定义 功能 数据采集 数据开发 数据分析 数据编程 补充 大数据平台架构解析--以讯飞大数据平台Odeon为例 定义 Odeon大数据平 ...
- 湖上建仓全解析:如何打造湖仓一体数据平台 | DEEPNOVA技术荟系列公开课第四期
如今,面对数字化快速发展带来的挑战,现代化企业需要打破以往数据的孤岛,让数据从采集.加工.管理到应用,是统一的数据存储和数据处理,甚至是作为全栈式的湖仓一体数据平台,以支撑各类数据赋能业务,进而创造更 ...
- python解析log文件_python解析基于xml格式的日志文件
大家中午好,由于过年一直还没回到状态,好久没分享一波小知识了,今天,继续给大家分享一波Python解析日志的小脚本. 首先,同样的先看看日志是个啥样. 都是xml格式的,是不是看着就头晕了??没事,我 ...
最新文章
- 一堂拯救万千股民的公开课
- DB2 SQL查询结果集自动编号、返回条数范围控制研究
- 【opencv】YUV各种色彩、YUV420sp2RGB
- 关于医网联影像工作站3.0(ProDicom Workstation 3.0)的版权及注册问题说明
- Quartz定时框架CronTrigger开发使用实例
- 实现Callable接口通过FutureTask包装器来创建Thread线程
- 《精解Windows8》——1.2 告别开始按钮进入“开始”屏幕时代
- qtcreator中常用快捷键总结
- SEAYAR - 思雅,快乐生活
- 康奈尔大学计算机科学人工智能,美国康奈尔大学工程学院申请之计算机科学
- [2018.07.14 T1] B君的第四题
- 深度剖析JVM常量池,String字符串相关八股文,茴香豆的茴有几种写法?
- oCPC实践录 | 好难理解的oCPC成本控制算法(1)
- android ae动画教程,AE动画转Web代码工具指北-Lottie
- 专治选择困难症:Mate 10 Pro和P20 Pro之间如何选?
- MATLAB画心形立体图
- IE8和IE9对于前端来说有什么区别
- display:flex的讲解
- 点开瞅瞅,再来几道Python面试题吧,Python面试题No20
- 新浪博客大赛:你刷我也刷?