【发布时间】:2017-11-05 07:49:31
【问题描述】:
我正在尝试捕获日志以用于测试目的,并使用 python 中的testfixtures 模块通过正则表达式匹配它,并通过logging 模块进行日志记录。
这是实际发生的事情的复制品:
import logging, traceback
from testfixtures import LogCapture, StringComparison
exception = None
try:
raise Exception('test exception')
except Exception as ex:
exception = ex
traceback_str = '\n'.join(traceback.format_exception(type(exception), exception, exception.__traceback__))
with LogCapture() as capture:
logging.info(traceback_str)
capture.check(('root', 'INFO', StringComparison(r'.*test exception.*')))
但是这段代码给出了错误并且不匹配。而且我无法将re.DOTALL 标志考虑为正则表达式中的. 作为换行符,因为它在StringComparison 的参数数量上给出错误。
现在,作为一种解决方法,我正在使用以下正则表达式:
capture.check(('root', 'INFO', StringComparison(r'(.*\n)*.*test exception.*'))
有没有其他方法可以提供标志来比较捕获的日志,或者使用不同的功能检查日志?
【问题讨论】:
-
这是一个第三方模块,不是标准库的一部分;如果您认为它需要一个新功能,请与维护者提出来
-
r'(?s).*test exception.*'不工作吗? -
@WiktorStribiżew 它工作正常。谢谢
标签: regex python-3.x logging