Regex 将日志文件中的正则表达式编译为dict,当日志文件具有新属性时出错

Regex 将日志文件中的正则表达式编译为dict,当日志文件具有新属性时出错,regex,python-2.7,dictionary,nginx,logparser,Regex,Python 2.7,Dictionary,Nginx,Logparser,所以我需要解析一个nginx日志文件。在日志文件进行到一半时,在每行的末尾添加了一个新变量 我用它作为灵感(即使用了大部分代码) Nginx有一个特定的日志格式,它在REQUEST\u TIME\u CONF中声明 我已经从最后一行中删除了request_time,以模拟日志行没有此属性的实例 因此,当存在请求时间时,它需要写入请求时间值,否则只需不写入 代码运行时会产生以下错误: AttributeError: 'bool' object has no attribute 'groupdict

所以我需要解析一个nginx日志文件。在日志文件进行到一半时,在每行的末尾添加了一个新变量

我用它作为灵感(即使用了大部分代码)

Nginx有一个特定的日志格式,它在REQUEST\u TIME\u CONF中声明

我已经从最后一行中删除了request_time,以模拟日志行没有此属性的实例

因此,当存在请求时间时,它需要写入请求时间值,否则只需不写入

代码运行时会产生以下错误:

AttributeError: 'bool' object has no attribute 'groupdict'
我对此做了更多的研究,看起来re模块在匹配(或不匹配)时会返回真值或假值,正如您所见,我天真地尝试了try/catch请求时间,认为如果该值不存在,我可以将Null传递给它,但这不起作用


因此,从外观上看,我认为需要在log_pattern regex findall函数中或在re.match期间进行某种检查,但我的python技能非常缺乏(因此代码借用!哈哈)

re
模块返回match或
None
从不布尔,但是如果匹配为
None
,则您的
find
函数可以返回
False
。在这种情况下,结果不应出现在列表中

for line in log_lines:
    request = find(log_pattern,line)
    if request:
        lines.append(request)
AttributeError: 'bool' object has no attribute 'groupdict'
for line in log_lines:
    request = find(log_pattern,line)
    if request:
        lines.append(request)