首页 > 编程语言 >python 日志解析【案例2】

python 日志解析【案例2】

时间:2023-02-23 00:12:20浏览次数:36  
标签:log python ur str path 日志 解析 os dir


 要做的事:


   1:获取日志内标红的数据(ipython模式正则捕获如下图)


 

 

 

 

 

 


 


   2:转换相关选项的md5和反编码值


   3:根据dm值和上个小时的年月日(如:20131027)(需要考虑凌晨零点几分的时对应的目录是昨天日期)找到相应目录,如不存在则创建


   4:新建以上小时格式命名的文本(如:20131027050)写入数据


下面是代码:



#!/usr/bin/python #coding:utf-8 """ Logs parse and format than write to the rigth dir Author by Qfeian @20131130 """ import os import re from urllib import unquote import hashlib import datetime #from time import sleep def hour(n=0): """Timeformat for hours the default is the current time """ now = datetime.datetime.now() h = now + datetime.timedelta(hours=n) return h.strftime('%Y%m%d'), h.strftime('%Y%m%d%H') def hash_str(str): """md5 encryption""" m = hashlib.md5() m.update(str) return m.hexdigest() def unquote_str(str): """urldecode by unquote""" s = unquote(str) return s def dir_query(str): """Check the dir if not exist create it """ s = os.path.isdir(str) if not s: os.makedirs(str) def path_query(paths,str): """如果第一次创建文本,则写入第一行内容""" s1 = os.path.isfile(paths) if not s1: f1 = open(paths,'a') f1.write(str) f1.close() def main(): log_dir = "/usr/local/nginx/logs/click.master.com_log/" #需要分析日志的路径 S_dir = "/data/app/click.master.com/logs/dlogs/" #分析后日志保存路径 str1 = "tm #*# uid #*# os #*# br #*# ip #*# ul #*# pt #*# pm #*# tl #*# co\n" """"format last hour time """ (D, H) = hour(-1) log_name = 'click.master.com_access.log-' + H #上小时nginx日志文件 log_path = os.path.join(log_dir, log_name) logfile = open(log_path, 'r') crg = re.compile(ur"(^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})" ur".*&dm=(.*?)" ur"&ul=(.*?)" ur"&tm=(.*?)" ur"&os=(.*?)" ur"&br=(.*?)" ur"&.*?&uid=(\d+)" ur"&pt=(.*?)" ur"&tl=(.*?)" ur"&co=(.*?)&") for lines in logfile.readlines(): """ check up on the nginx logs by regular""" a = crg.findall(lines) """ if matching write to the logfile """ if a: (ip, dm, ul, tm, OS, br, uid, pt, tl, co) = a[0] pt = unquote_str(pt) tl = unquote_str(tl) co = unquote_str(co) pm = hash_str(pt) s = "%s #*# %s #*# %s #*# %s #*# %s #*# %s #*# %s #*# %s #*# %s #*# %s\n" % \ (tm, uid, OS, br, ip, ul, pt, pm, tl, co) W_log = os.path.join(S_dir, dm, D, H) W_log = W_log + '.log' W_dir = os.path.dirname(W_log) """ check logdir and logpath""" dir_query(W_dir) path_query(W_log,str1) """ write logs """ f = open(W_log, 'a') f.write(s) # print s # print dm, "\n" # sleep(1) f.close() logfile.close() if __name__ == "__main__": main()

 

标签:log,python,ur,str,path,日志,解析,os,dir
From: https://www.cnblogs.com/oceaning/p/17146486.html

相关文章

  • GTD践行日志
    GTD践行日志前言以前工作时总会出现一些状况,诸如接了太多任务,做了太多承诺,结果换来的是累且干不好事情,绩效“稳定”下滑。痛定思痛,这其中一定有一些关键的东西被我忽略了......
  • Python 解析log日志【案例1】
    sudoaptinstallpython3.8#安装python3python3.8-mpipinstallpython-dateutil#安装dateutil包[2021-09-0311:03:11]**************************E......
  • 【Spring AOP】【九】Spring AOP源码解析-拦截器/通知器链的执行过程
    1 前言上一节我们说了通知器链的而顺序问题,那么这节我们该看看它的执行了。我们拿JDK代理的执行过程来看哈。2 源码分析2.1 方法通读对于JDK动态代理的,那我们再......
  • C#后缀表达式解析计算字符串公式
    当我们拿到一个字符串比如:20+31*(100+1)的时候用口算就能算出结果为3151,因为这是中缀表达式对于人类的思维很简单,但是对于计算机就比较复杂了。相对的后缀表达式适合计算机......
  • 自学python-安装python/pycharm-day03
    安装解释器/学习工具pycharm1.Python简介诞生python的创始人为吉多·范罗苏姆(GuidovanRossum),一般称龟叔。1989年的圣诞节期间,龟叔为了在阿姆斯特丹打发时间,决心......
  • 自学python-计算机基础原理-day02
    python学习第一课什么是python?python是一门编程语言什么是编程语言呢就是人与电脑交互的语言我们用python编写自己想要得软件而python把我们写的语言转化成计算机看......
  • python+playwright 学习-9.页面对象模型Page Object Models
    前言POM(PageObjectModels)页面对象模型已经成了写web自动化的一个标准模型。页面对象模型PageObjectModels页面对象代表Web应用程序的一部分。电子商务Web......
  • 自学python-学习路线-day01
    python自学线路图1.python基础语言1.1变量1.2运算符1.3判断语句if1.4循环语句whliefor1.5函数1.6面向对象2.多线程2.1异常处理2.2文件i/o3.数据结......
  • python操作excel之openpyxl
    1、安装pipinstallopenpyxl2、打开工作簿wb=openpyxl.load_workbook("./test.xlsx")3、选择表单sheet=wb["sheet1"]4、获取指定单元格的数据print(sheet.cell(1,2).v......
  • 【Spring AOP】【八】Spring AOP源码解析-拦截器/通知器链的执行顺序
    1 前言上节我们看过了代理对象执行方法的大致过程,我们留着通知器链的具体执行没说,这节我们先讲解一下通知器的执行顺序。通知器或者叫拦截器,叫法不一样,这里我们还是都......