python分析nginx自定义日志
# -*- coding:utf-8 -*-
import datetime
import re
logfile = '''192.168.23.43 - 2017-12-14:00:14:41 /seeyon/index.jsp?- 301 364146089 1 - - 316 0.000 GET HTTP/1.1 oa.example.com 80 - 178 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.7 (KHTML, like Gecko) - - - - -'''
pattern = '''(?P<remote>[\d\.]{7,}) - (?P<datetime>[\d\-\:]+) (?P<request>[^\d]+) (?P<status>[\d]+) (?P<size>[\d]+) ([\d]+) - - ([\d]+) ([\d\.]+) (?P<mothod>[\w]+) (?P<protocol>[\w\.\d\/]+) (?P<host>[\w\.]+) (?P<port>[\d]+) - ([\d]+) (?P<useragent>[\d\w\.\/]+) \((?P<machine>[^\(]+)\) ([\w\d\.\/]+) \(([^\(]+)\) - - - - -'''
regex = re.compile(pattern)
def extract(line):
matcher = regex.match(line)
if matcher:
return {k:ops.get(k, lambda x:x)(v) for k, v in matcher.groupdict().items()}
'''
def convent_time(timestr):
fmtstr = "%Y-%m-%d:%H:%M:%S"
dt = datetime.datetime.strptime(timestr,fmtstr)
return dt
上面def的功能 == 下面lambda的功能
lambda timestr:datetime.datetime.strptime(timestr,"%Y-%m-%d:%H:%M:%S")
'''
ops = {
'datetime':lambda timestr:datetime.datetime.strptime(timestr,"%Y-%m-%d:%H:%M:%S"),
'status':int,
'size':int,
}
print(extract(logfile))
datetime有点问题,未解决!
结果:
python分析nginx自定义日志的更多相关文章
- elk收集分析nginx access日志
elk收集分析nginx access日志 首先elk的搭建按照这篇文章使用elk+redis搭建nginx日志分析平台说的,使用redis的push和pop做队列,然后有个logstash_inde ...
- 采集并分析Nginx访问日志
日志服务支持通过数据接入向导配置采集Nginx日志,并自动创建索引和Nginx日志仪表盘,帮助您快速采集并分析Nginx日志. 许多个人站长选取了Nginx作为服务器搭建网站,在对网站访问情况进行分析 ...
- 利用python分析nginx日志
最近在学习python,写了个脚本分析nginx日志,练练手.写得比较粗糙,但基本功能可以实现. 脚本功能:查找出当天访问次数前十位的IP,并获取该IP来源,并将分析结果发送邮件到指定邮箱. 实现前两 ...
- Python分析NGINX LOG版本二
不好意思,上一版逻辑有错误,(只分析了一次就没了) 此版改正. 按同事要改,作成传参数形式,搞定. #!/usr/bin/env python # coding: utf-8 ############ ...
- ELK收集Nginx自定义日志格式输出
1.ELK收集日志的有两种常用的方式: 1.1:不修改源日志格式,简单的说就是在logstash中转通过 grok方式进行过滤处理,将原始无规则的日志转换为规则日志(Logstash自定义日志格式) ...
- GoAccess安装及分析nginx实时日志
GoAccess是一个基于终端的快速日志分析器.其核心思想是实时快速分析和查看Web服务器统计信息,而无需使用您的浏览器(如果您希望通过SSH快速分析访问日志,或者只是喜欢在终端中工作),终端输出是默 ...
- 使用hive分析nginx访问日志方法
以下案例是使用hive分析nginx的访问日志案例,其中字段分隔通过正则表达式匹配,具体步骤如下: 日志格式: 192.168.5.139 - - [08/Jun/2017:17:09:12 +080 ...
- python分析apahce网站日志的例子
有关python实现apahce网站日志分析的方法. 应用到:shell与python数据交互.数据抓取,编码转换 #coding:utf-8 #!/usr/bin/python'''程序说明:apa ...
- python 分析慢查询日志生成报告
python分析Mysql慢查询.通过Python调用开源分析工具pt-query-digest生成json结果,Python脚本解析json生成html报告. #!/usr/bin/env pyth ...
随机推荐
- 走起 ~私有gitlab
1.创建gitlab 账号,创建一个项目名称 地址:http://git.limikeji.com 2.配置git环境 用git命令上传代码 3.配置gitlab ssh 4.使用git命令上传代码 ...
- 动态改变Listview的item背景颜色和item中字体的颜色
https://blog.csdn.net/qq_14813933/article/details/50417859
- MySQL使用的常见问题
(一)是否启动了服务器 如果没有启动报错:ERROR 2003 (HY000): Can't connect to MySQL server on ‘localhost' (10061) 解决方法:启 ...
- 『MXNet』第十二弹_再谈新建计算节点
上一节我们已经谈到了计算节点,但是即使是官方文档介绍里面相关内容也过于简略,我们使用Faster-RCNN代码中的新建节点为例,重新介绍一下新建节点的调用栈. 1.调用新建节点 参数分为三部分,op_ ...
- react中直接调用子组件的方法(非props方式)
我们都知道在 react中,若要在父组件调用子组件的方法,通常我们会采用在父组件定义一个方法,作为props转给子组件,然后执行该方法,可以获取到子组件传回的参数以得到我们的目的. 显而易见,这个执行 ...
- hdu-6434-欧拉函数
Problem I. Count Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Other ...
- oracle登陆触发器及精细审计
--oracle精细审计FGAselect tab2.userhost 引起操作的主机名,tab2.os_user 引起操作的主机用户,tab2.object_schema 被操作对象所属用户,tab ...
- IDEA 自动生成 serialVersionUID 的设置
打开File菜单,选择Settings选项,打开Settings设置对话框:左边树形目录,打开Editor>Inspections
- set集合深浅拷贝以及知识补充
一. 对之前的知识点进行补充. 1. str中的join方法. 把列表转换成字符串 li = ["李嘉诚", "麻花藤", "黄海峰", & ...
- 四、持久层框架(Hibernate)
一.一级缓存与二级缓存 1.一级缓存:Hibernate默认是开启一级缓存的,一级缓存存放在session里,一个Session做一次查询操作,会把这个操作的结果放在一级缓存中,如果短时间内这个ses ...