zoukankan      html  css  js  c++  java
  • 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>[dw./]+) ((?P<machine>[^(]+)) ([wd./]+) (([^(]+)) - - - - -'''
    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有点问题,未解决!

    结果:

  • 相关阅读:
    作业5.1 四则运算----封装
    作业四
    作业2 (完)
    作业3
    作业二。。
    数独
    回答自己的提问
    《一个程序猿的生命周期》读后感
    阅读13-17章
    阅读10,11,12章
  • 原文地址:https://www.cnblogs.com/qfdxxdr/p/8057618.html
Copyright © 2011-2022 走看看