加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

日志分析代码实现(正则表达式)

发布时间:2020-12-14 06:41:34 所属栏目:百科 来源:网络整理
导读:日志分析代码实现(正则表达式) 思路 使用正则表达式处理:使用正则提取对应内容每段数据转换为对应格式精简代码,异常处理,代码效率检查 importdatetime importre logline='''183.60.212.153--[19/Feb/2013:10:23:29+0800]"GET/o2o/media.html?menu=3HTTP/1.1

日志分析代码实现(正则表达式)

  • 思路

    使用正则表达式处理:
    使用正则提取对应内容
    每段数据转换为对应格式
    精简代码,异常处理,代码效率检查

importdatetime

importre

logline='''183.60.212.153--[19/Feb/2013:10:23:29+0800]"GET/o2o/media.html?menu=3HTTP/1.1"20016691"-""Mozilla/5.0(compatible;EasouSpider;+http://www.easou.com/search/spider.html)"'''#使用正则表达式的命名分组,可以直接根据分组名和对应匹配字段#进行对应生成新字典deflog_clean(line:str): pattern='''(?P<remote>([d.]{7,}))--[(?P<time>[^[]]+)]"(?P<request>[^"]+)"(?P<status>d{3})(?P<size>d+)"-""(?P<useragent>[^"]+)"s?''' regex=re.compile(pattern) matcher=regex.fullmatch(line) ifmatcher: #None时,异常处理 return{k:operations.get(k,lambdax:x)(v)fork,vinmatcher.groupdict().items()}operations={ 'time':lambdatime:datetime.datetime.strptime(time,'%d/%b/%Y:%H:%M:%S%z'),'request':lambdarequest:dict(zip(('method','url','protocol'),request.split())),'status':int,'size':int}print(log_clean(logline))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读