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