位置: IT常识 - 正文

Python解析nginx日志示例(nginx运行python)

编辑:rootadmin

推荐整理分享Python解析nginx日志示例(nginx运行python),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nginx运行python,nginx+python,python-nginx,python apache nginx,python-nginx,nginx+python,python解析nginx日志,nginx+python,内容如对您有帮助,希望把文章链接给更多的朋友!

Python项目的一个需求是解析nginx的日志文件,这里给出详细过程解析。

日志规则描述

首先要明确自己的Nginx的日志格式,这里采用默认Nginx日志格式:

log_formatmain'$remote_addr-$remote_user[$time_local]"$request"''$status$body_bytes_sent"$http_referer"''"$http_user_agent""$http_x_forwarded_for"';

其中一条真实记录样例如下:

代码如下:

172.22.8.207 - - [16/Dec/2014:17:57:35 +0800] "GET /report?DOmjjuS6keWJp+WculSQAgdUkAIPODExMzAwMDJDN0FC HTTP/1.1" 200 0 "-" "XXXXXXX/1.0.16; iPhone/iOS 8.1.2; ; 8DA77E2F91D0"

其中,客户端型号信息用XXXXXXX代替。

项目中已经按照业务规则对Nginx日志文件进行了处理命名规则如下:

ID-ID-YYMMDD-hhmmss

并且所有的日志文件存放在统一路径下。

解决思路

获取所有日志文件path

这里使用Python的glob模块来获取日志文件path

importglobdefreadfile(path):returnglob.glob(path+'*-*-*-*')

获取日志文件中每一行的内容

使用Python的linecache模块来获取文件行的内容

importlinecachedefreadline(path):returnlinecache.getlines(path)

注意:linecache模块使用了缓存,所以存在以下问题:

在使用linecache模块读取文件内容以后,如果文件发生了变化,那么需要使用linecache.updatecache(filename)来更新缓存,以获取最新变化。

linecache模块使用缓存,所以会耗费内存,耗费量与要解析的文件相关。最好在使用完毕后执行linecache.clearcache()清空一下缓存。

当然,作为优化,这里可以利用生成器来进行优化。暂且按下不表。

Python解析nginx日志示例(nginx运行python)

处理日志条目

一条日志信息就是一个特定格式的字符串,因此使用正则表达式来解析,这里使用Python的re模块。

下面,一条一条建立规则:

规则

ip=r"?P<ip>[\d.]*"date=r"?P<date>\d+"month=r"?P<month>\w+"year=r"?P<year>\d+"log_time=r"?P<time>\S+"method=r"?P<method>\S+"request=r"?P<request>\S+"status=r"?P<status>\d+"bodyBytesSent=r"?P<bodybytessent>\d+"refer=r"""?P<refer>[^\"]*"""userAgent=r"""?P<useragent>.*"""</useragent></refer></bodybytessent></status></request></method></time></year></month></date></ip>

解析

代码如下:

p=re.compile(r"(%s)\-\-\\[(%s)/(%s)/(%s)\:(%s)\[\S]+\]\\"(%s)?[\s]?(%s)?.*?\"\(%s)\(%s)\\"(%s)\"\\"(%s).*?\""%(ip,date,month,year,log_time,method,request,status,bodyBytesSent,refer,userAgent),\re.VERBOSE)m=re.findall(p,logline)

这样,就可以得到日志条目中各个要素的原始数据。

格式及内容转化

得到日志原始数据之后,需要根据业务要求,对原始数据进行格式及内容转化。

这里需要处理的内容包括:时间,request,userAgent

时间格式转化

在日志信息原始数据中存在Dec这样的信息,利用Python的time模块可以方便的进行解析

importtimedefparsetime(date,month,year,log_time):time_str='%s%s%s%s'%(year,month,date,log_time)returntime.strptime(time_str,'%Y%b%d%H:%M:%S')

解析request

在日志信息原始数据中得到的request的内容格式为:

/report?XXXXXX

这里只需要根据协议取出XXXXXX即可。

这里仍然采用Python的re模块

importredefparserequest(rqst):param=r"?P<param>.*"p=re.compile(r"/report\?(%s)"%param,re.VERBOSE)returnre.findall(p,rqst)

接下来需要根据业务协议解析参数内容。这里需要先利用base64模块解码,然后再利用struct模块解构内容:

importstructimportbase64defparseparam(param):decodeinfo=base64.b64decode(param)s=struct.Struct('!x'+bytes(len(decodeinfo)-(1+4+4+12))+'xii12x')returns.unpack(decodeinfo)

解析userAgent

在日志信息原始数据中userAgent数据的格式为:

XXX; XXX; XXX; XXX

根据业务要求,只需要取出最后一项即可。

这里采用re模块来解析。

importredefparseuseragent(useragent):agent=r"?P<agent>.*"p=re.compile(r".*;.*;.*;(%s)"%agent,re.VERBOSE)returnre.findall(p,useragent)

至此,nginx日志文件解析基本完成。

本文链接地址:https://www.jiuchutong.com/zhishi/304596.html 转载请保留说明!

上一篇:什么是phpcms二次开发?(phpcms二次开发教程)

下一篇:最新2022年Auto Cad2019专用破解版windows11-windows12-32位64位下载(附视频教程)免费下载(学生誓词最新2022年)

  • 为什么老年人要接种新冠病毒疫苗?

    为什么老年人要接种新冠病毒疫苗?

  • 如何找回回收站清空文件

    如何找回回收站清空文件

  • 抖音浏览记录关闭别人还能看到我的浏览记录吗(抖音浏览记录关闭了看别人作品会显示吗)

    抖音浏览记录关闭别人还能看到我的浏览记录吗(抖音浏览记录关闭了看别人作品会显示吗)

  • 华为手表排水功能是什么意思(华为手表排水功能怎么打开)

    华为手表排水功能是什么意思(华为手表排水功能怎么打开)

  • iwatch怎么录入公交卡(怎么在iwatch上添加公交卡)

    iwatch怎么录入公交卡(怎么在iwatch上添加公交卡)

  • 我的世界神奇宝贝怎么召唤神兽(我的世界神奇宝贝指令)

    我的世界神奇宝贝怎么召唤神兽(我的世界神奇宝贝指令)

  • 抖音小店和橱窗的区别有哪些(抖音小店和橱窗的区别)

    抖音小店和橱窗的区别有哪些(抖音小店和橱窗的区别)

  • mt732ch/a是什么版本

    mt732ch/a是什么版本

  • 微信说话时间太短是怎么回事(微信说话时间太短自动退出)

    微信说话时间太短是怎么回事(微信说话时间太短自动退出)

  • 华为手表gt2e和gt2区别(华为手表gt2e和gt2pro区别)

    华为手表gt2e和gt2区别(华为手表gt2e和gt2pro区别)

  • 抖音图片怎么保存到手机(抖音图片怎么保存到相册)

    抖音图片怎么保存到手机(抖音图片怎么保存到相册)

  • 小米手表color黑屏(小米手表color黑屏无反应)

    小米手表color黑屏(小米手表color黑屏无反应)

  • 苹果手机更新系统的利与弊(苹果手机更新系统开不了机怎么办)

    苹果手机更新系统的利与弊(苹果手机更新系统开不了机怎么办)

  • 微信账号为什么自己冻结了(微信账号为什么会被冻结)

    微信账号为什么自己冻结了(微信账号为什么会被冻结)

  • icloud安全码是啥(icloud安全码在哪里)

    icloud安全码是啥(icloud安全码在哪里)

  • 用手机投屏在电视上看为什么投不上去(用手机投屏在电视上看需要什么软件)

    用手机投屏在电视上看为什么投不上去(用手机投屏在电视上看需要什么软件)

  • 小米4lte和小米4一样吗(小米4lte价格)

    小米4lte和小米4一样吗(小米4lte价格)

  • xr有锁和无锁的区别(xr有锁和无锁的区别在哪)

    xr有锁和无锁的区别(xr有锁和无锁的区别在哪)

  • vivo nex3怎么设置指纹解锁(vivoNEX3怎么设置可以更省电)

    vivo nex3怎么设置指纹解锁(vivoNEX3怎么设置可以更省电)

  • pe功能的u盘怎么弄(pe的u盘怎么用)

    pe功能的u盘怎么弄(pe的u盘怎么用)

  • 华为手表gt2怎么添加音乐(华为手表gt2怎么设置自己的照片)

    华为手表gt2怎么添加音乐(华为手表gt2怎么设置自己的照片)

  • macbook彻底删除软件(macbook彻底删除文件恢复)

    macbook彻底删除软件(macbook彻底删除文件恢复)

  • 苹果手机怎么滑动截图(苹果手机怎么滑屏)

    苹果手机怎么滑动截图(苹果手机怎么滑屏)

  • 抖音怎么收藏别人道具(抖音怎么收藏别人的表情包)

    抖音怎么收藏别人道具(抖音怎么收藏别人的表情包)

  • 华为分屏无法同时运行(华为分屏不了)

    华为分屏无法同时运行(华为分屏不了)

  • 一般纳税人购进货物用于免征增值税项目
  • 暴利税怎么计算
  • 税务做定额
  • 企业的开办费
  • 捐赠的费用放在什么科目
  • 申请开红字发票,原蓝字发票要退回来吗
  • 允许税前扣除的利息支出
  • 在建工程之前是什么
  • 事业单位结转资金和结余资金区别
  • 拍卖土地支付的法律依据
  • 企业给员工购买社保的规定
  • 以银行存款退还投资者股金
  • 发票已认证未抵扣怎么办
  • 备用金可以银行贷款吗
  • 小规模纳税人是简易计税吗
  • 资产折旧摊销扣什么税
  • 差额纳税怎么记账
  • 现金盘亏记哪里
  • 公对公转账备注信息填错了怎么办
  • 转账户有误退回会计处理
  • 房租税收怎么算?
  • 已核销的应收账款
  • 对研发机构采购国产设备,全额退还增值税
  • cpu不支持vt怎么办
  • 在线测网速准吗
  • 小微企业工业企业认定标准
  • 企事业承包承租经营所得税税法
  • 民间非营利组织会计制度会计科目
  • win11打开图片
  • 股东借钱给公司怎么写借条
  • 建筑业成本率是多少
  • 多交的增值税可以做营业外支出吗?
  • 即期结售汇期限包括
  • 防伪税控盘全额抵扣政策
  • 小规模纳税企业在应交增值税明细科目
  • 职工工资扣税比例
  • 外贸出口企业增值税怎么结转
  • 免交的增值税要交所得税吗
  • 产品体验是什么意思
  • WordPress 浏览量修改
  • 企业年报未报会有什么后果
  • ajax写接口
  • mongodb数据库是哪个公司的
  • phpcms使用教程
  • 未分配利润用于扩大再生产
  • 企业附加税的税率
  • 新公司成立后税务方面有哪些流程2023
  • access2016备注型
  • 劳务税能退税吗
  • 成本核算分摊方法总结
  • 增值税附加税的比例
  • 防暑降温费怎么入账
  • session几种存储方式
  • xp恢复回收站删除文件
  • 智能abc不能输入汉字
  • 电脑bios怎么分区
  • 打开win七
  • mac死机按什么都没用
  • mac如何安装dmg软件
  • Linux桌面环境选择
  • rftray.exe - rftray是什么进程 有什么用
  • win10 1511(win10 TH2)如何调整开始屏幕磁贴大小?
  • iptables用法
  • 怎么关闭win10升级
  • win10一周年版本
  • 电脑开机出现windows7
  • win8怎么到win7
  • Unity3D游戏开发培训课程大纲
  • 给自己的网站制作软件
  • easyui multiple
  • 创建nodejs项目的步骤
  • node.js golang
  • javascript字符
  • android缓存机制
  • javascript definitive guide
  • 江苏省生育登记服务网
  • 怎么查税务专管员是谁的名字
  • 江苏税务社保缴纳查询缴费记录
  • 领导班子和领导干部评议意见表
  • 出口退税备案单证目录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设