Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在python - regex中解析多行catalina日志

如何在python - regex中解析多行catalina日志
EN

Stack Overflow用户
提问于 2018-03-03 12:39:01
回答 1查看 697关注 0票数 0

我有catalina日志:

代码语言:javascript
运行
AI代码解释
复制
oct 21, 2016 12:32:13 AM org.wso2.carbon.identity.sso.agent.saml.SSOAgentHttpSessionListener sessionCreated
WARNING: HTTP Session created without LoggedInSessionBean
oct 21, 2016 3:03:20 AM com.sun.jersey.spi.container.ContainerResponse logException
SEVERE: Mapped exception to response: 500 (Internal Server Error)
javax.ws.rs.WebApplicationException
    at ais.api.rest.rdss.Resource.lookAT(Resource.java:22)
    at sun.reflect.GeneratedMethodAccessor3019.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

我试着用python解析它。我的问题是我不知道log中有多少行。最小为2行。我尝试从文件中读取,当第一行以j,m,s,o等开头时,这意味着它是日志的第一行,因为这是月份的第一个字母。但是我不知道如何继续下去。当我停止读台词的时候?下一行什么时候会以这些字母中的一个开始?但是我该怎么做呢?

代码语言:javascript
运行
AI代码解释
复制
import datetime
import re

SPACE = r'\s'
TIME = r'(?P<time>.*?M)'
PATH = r'(?P<path>.*?\S)'
METHOD = r'(?P<method>.*?\S)'
REQUEST = r'(?P<request>.*)'
TYPE = r'(?P<type>.*?\:)'

REGEX = TIME+SPACE+PATH+SPACE+METHOD+SPACE+TYPE+SPACE+REQUEST

def parser(log_line):
  match = re.search(REGEX,log_line)
    return ( (match.group('time'),
          match.group('path'), 
                              match.group('method'),
                              match.group('type'),
                              match.group('request')
                             )
                           )

db = MySQLdb.connect(host="localhost", user="myuser", passwd="mypsswd", db="Database")

with db:
  cursor = db.cursor()


    with open("Mylog.log","rw") as f:
        for line in f:

          if (line.startswith('j')) or (line.startswith('f')) or (line.startswith('m')) or (line.startswith('a')) or (line.startswith('s')) or (line.startswith('o')) or (line.startswith('n')) or (line.startswith('d')) :

          logLine = line
          result = parser(logLine)

                sql = ("INSERT INTO ..... ")
                data = (result[0])
                cursor.execute(sql, data)

f.close()
db.close()

我最好的办法是一次只读两行。但这意味着丢弃所有其他数据。一定有更好的办法。

我想像这样读几行: 1.line - oct 21, 2016 12:32:13 AM org.wso2.carbon.identity.sso.agent.saml.SSOAgentHttpSessionListener sessionCreated WARNING: HTTP Session created without LoggedInSessionBean

2.line - oct 21, 2016 3:03:20 AM com.sun.jersey.spi.container.ContainerResponse logException SEVERE: Mapped exception to response: 500 (Internal Server Error) javax.ws.rs.WebApplicationException at ais.api.rest.rdss.Resource.lookAT(Resource.java:22) at sun.reflect.GeneratedMethodAccessor3019.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl java:43)

3.line - oct 21, 2016 12:32:13 AM org.wso2.carbon.identity.sso.agent.saml.SSOAgentHttpSessionListener sessionCreated WARNING: HTTP Session created without LoggedInSessionBean

因此,我希望在行以datetime开始时开始读取(这没有问题)。问题是,当下一行以datetime开始时,我想停止读取。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-05 18:36:20

这可能就是你想要的。

我从生成器内的日志中读取行,以便确定它们是日期时间行还是其他行。此外,重要的是,我可以在日志文件中标记已到达文件末尾。

在程序的主循环中,当我得到一个日期时间行时,我开始在列表中累加行。第一次看到日期时间行时,如果它不为空,我会将其打印出来。由于程序会在文件结束时累积完整的行,因此我也安排在这一点打印累积的行。

代码语言:javascript
运行
AI代码解释
复制
import re

a_date, other, EOF = 0,1,2

def One_line():
    with open('caroline.txt') as caroline:
        for line in caroline:
            line = line.strip()
            m = re.match(r'[a-z]{3}\s+[0-9]{1,2},\s+[0-9]{4}\s+[0-9]{1,2}:[0-9]{2}:[0-9]{2}\s+[AP]M', line, re.I)
            if m:
                yield a_date, line
            else:
                yield other, line
    yield EOF, ''

complete_line = []
for kind, content in One_line():
    if kind in [a_date, EOF]:
        if complete_line:
            print (' '.join(complete_line ))
        complete_line = [content]
    else:
        complete_line.append(content)

输出:

代码语言:javascript
运行
AI代码解释
复制
oct 21, 2016 12:32:13 AM org.wso2.carbon.identity.sso.agent.saml.SSOAgentHttpSessionListener sessionCreated WARNING: HTTP Session created without LoggedInSessionBean
oct 21, 2016 3:03:20 AM com.sun.jersey.spi.container.ContainerResponse logException SEVERE: Mapped exception to response: 500 (Internal Server Error) javax.ws.rs.WebApplicationException at ais.api.rest.rdss.Resource.lookAT(Resource.java:22) at sun.reflect.GeneratedMethodAccessor3019.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49084202

复制
相关文章
matlab计算多重复杂多边形重叠面积
最近在学习中遇到了求多边形图像重叠面积问题,经查阅资料发现polyshape函数可以解决此问题,下面总结一下本次学习的心得:
巴山学长
2021/07/30
2.5K0
应对人虎共存难题,首个识别和传输老虎照片的 AI 相机来了
20 世纪初以来,全球野生虎数量下降了 95% 以上,被国际自然保护联盟 (IUCN) 列为红色濒危物种。近几十年,在多个国家及组织的共同努力下,全球野生虎数量实现回升,从 2010 年的 3,200 只增至 2022 年的 4,500 只。
HyperAI超神经
2023/10/24
2240
应对人虎共存难题,首个识别和传输老虎照片的 AI 相机来了
689.三个无重叠子数组的最大和
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名,转载请标明出处 最后编辑时间为: 2021/12/09 02:48
用户9347382
2022/01/10
2290
python计算多边形面积
本文提供一个简单的方法计算多边形面积,参考维基百科 实现代码: def polygon_area(polygon): """ compute polygon area polygon: list with shape [n, 2], n is the number of polygon points """ area = 0 q = polygon[-1] for p in polygon: area += p[0] * q[1]
DoubleV
2021/12/06
1.6K0
python计算多边形面积
有重叠与无重叠序列之序列检测与序列产生
例如检测序列1101011,我们给出输入:110101101011,如果是无重叠检测,则只能检测到一个序列:1101011_01011;
Reborn Lee
2020/06/29
1.9K0
GJK算法计算凸多边形之间的距离
《你被追尾了续》中我们学习了 GJK 碰撞检测算法. 但其实 GJK 算法发明出来的初衷是计算凸多边形之间的距离的. 所以我们来学习一下这种算法.
ACM算法日常
2020/08/13
4.9K0
GJK算法计算凸多边形之间的距离
预测模型的计算时间
在周二我给精算师上的5小时机器学习速成课结束时,皮埃尔问了我一个有趣问题,是关于不同技术的计算时间的。我一直在介绍各种算法的思想,却忘了提及计算时间。我想在数据集上尝试几种分类算法来阐述这些技术。
jiazheng2222
2018/05/23
2.7K0
预测模型的计算时间
计算与推断思维 十三、预测
数据科学的一个重要方面,是发现数据可以告诉我们什么未来的事情。气候和污染的数据说了几十年内温度的什么事情?根据一个人的互联网个人信息,哪些网站可能会让他感兴趣?病人的病史如何用来判断他或她对治疗的反应?
ApacheCN_飞龙
2022/12/01
2.4K0
计算与推断思维 十三、预测
2014年大数据与云计算的预测
在2013年,我们看到了越来越多的大数据项目走出概念验证阶段,进入了生产和实施阶段。大数据并不是一个全新的思路了;企业们知道需要解决它,由这些大数据可以产生出很多有益的见解(或一些集成的障碍)。 然而,云计算却处于一个截然不同的阶段,远远超过了初始的炒作阶段,进入了一个混合部署的新时代,在这一新时代中云计算显然地扩展到了数据中心中。在2014年,我们可以期待大数据和云计算的发展: 1、大数据和云计算一同成长:大多数组织知道他们应该使用云计算平台,但云计算到大数据的主要贡献将会转移。不久,云计算将
静一
2018/03/16
2.4K0
有害同义突变预测的计算方法的比较与整合
Comparison and integration of computational methods for deleterious synonymous mutation prediction
作图丫
2022/03/29
1.7K0
有害同义突变预测的计算方法的比较与整合
重叠区间的个数
首先,要定义区间的类,实现Comparable接口,含有起点与止点的值和类型,还要重写用于排序的compareTo函数。
努力在北京混出人样
2019/02/18
1.8K0
AI护老虎,智护生态,英特尔用人工智能解决大问题
受人类活动增加、森林砍伐、栖息地退化等多种因素的影响,野生东北虎种群及其栖息地在不断地萎缩,自2012年至2015年期间,有关部门在中国境内通过野外红外相机仅监测到不到30只野生东北虎个体。野生东北虎处于食物链顶端,它们的生存状态是反映整个生态系统是否健康的一项重要指标。
量子位
2019/04/27
5610
每日一题[LeetCode 689]三个无重叠子数组的最大和
返回每个区间起始索引的列表(索引从 0 开始)。如果有多个结果,返回字典序最小的一个。
godweiyang
2020/03/24
7180
每日一题[LeetCode 689]三个无重叠子数组的最大和
计算与推断思维 十七、更新预测
我们知道如何使用训练数据将一个点划分为两类之一。 我们的分类只是对类别的预测,基于最接近我们的新点的,训练点中最常见的类别。
ApacheCN_飞龙
2022/12/01
2890
计算与推断思维 十七、更新预测
关于元素间的边距重叠问题与BFC
BFC(Block Formatting Context),即块级格式化上下文,创建了 BFC 的元素是一个独立的容器,里面无论如何布局都不会影响到外面的元素
Leophen
2019/08/23
1.9K0
关于元素间的边距重叠问题与BFC
CGAL 计算两个凸多边形相交的面积
我正在使用 CGAL 计算两个凸多边形相交的面积。在对 this 的接受答案中发布了执行此操作的简短演示代码。问题。但是,当我修改该代码以使用我感兴趣的多边形时,CGAL 从 CGAL::intersection() 例程的深处抛出运行时异常。
用户3519280
2023/07/06
4210
2018年的云计算趋势预测
在云计算、开源和IT基础设施领域,变化是一个不变的事实。而用户态度、产品趋势,以及行业在社会中的角色变化如此之快,以至于预测2018年的主要趋势发展有点像大海捞针。 在未来几年,有几个关键趋势会变得更加突出:无服务器的社会,企业放弃私有云的决心,行业巨头的责任需求,企业管理层的边界模糊,以及亚马逊公司在云基础设施市场的发展。 1.智能商业技术将模糊管理层的界限 “所有公司都是软件公司”这句话在过去几年已经成为一个引人注目的热门词汇,但是到了2017年,很多企业才真正把这个想法付诸实践。各种形式和规模的公司采
静一
2018/03/28
9610
看屁股,你是一头大象吧
杨净 发自 凹非寺  量子位 报道 | 公众号 QbitAI 总有人问,AI可以为生态平衡做些什么? 在云南西双版纳雨林深处,他们给出了一份答案——「保护亚洲象,构建人象共处的雨林生态」。 亚洲象,作为全球濒危物种之一,全国只有300余头,云南西双版纳地区是主要栖息地。 在上世纪七八十年代,亚洲象在国内的数量曾降至170头左右,濒临灭绝。在行之有效的保护措施下,亚洲象的濒危状态得到一定的缓解。 「保护亚洲象」已见成效,但随之而来的,是大象逐渐走出雨林,来到人类生活区,造成「人象冲突」事件。 于是,人与象
量子位
2023/03/10
4210
看屁股,你是一头大象吧
每日算法系列【LeetCode 1031】两个非重叠子数组的最大和
给出非负整数数组 A ,返回两个非重叠(连续)子数组中元素的最大和,子数组的长度分别为 L 和 M。(这里需要澄清的是,长为 L 的子数组可以出现在长为 M 的子数组之前或之后。)
godweiyang
2020/03/24
1.2K0
出色预测云计算的CTO指南
混合云已被其近亲‘多云'所取代,79%的企业表示已采用多家云计算提供商的云服务。对于那些准备在公共云和私有云平台上采用混合服务的企业来说,多云现在被广泛认为是云计算的未来。
静一
2018/12/29
5100

相似问题

Sharepoint 2013 Excel Services在工作簿中不呈现Power报表

11

使用单元格引用作为工作簿和工作表的名称激活Excel工作簿/工作表

20

如何自动更新Excel工作簿中的多个工作表?

21

Excel services无法打开工作簿

23

Excel工作簿更新

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文