因此,我相信这个问题可以应用于生成python控制台日志的任何python文件。
我试图捕获运行行为测试时生成的输出(所有代码都在python3.x中)。
或更准确地说:我正在尝试将实时生成的控制台输出捕获到文件中,以获取python代码中感兴趣的特定功能。
我的目的是捕获在python代码中达到特定功能后打印在stdout
上的控制台日志。
我通常在Ubuntu 18.04上使用behave data_base_scenarios.feature
而不加引号。
我想捕获完整的输出,因为它直接输出到控制台中。
在StackOverflow上,搜索了一段时间之后,我尝试了此处描述的一些方法:Capturing stdout within the same process in Python。我还发现了这一点:https://capturer.readthedocs.io/en/latest/
不幸的是,我看不到任何东西被捕获。
我已经小心地设置了行为环境以生成日志。例如,所有这些标志都经过适当地显式设置以生成输出:
context.config.stdout_capture = True
,context.config.log_capture = True
。
我对行为环境缺少什么?
行为框架还在“上下文”中提供了一个变量。它的“ context.stdout_capture”。但不幸的是,它什么也没有。
简而言之,行为在控制台上打印
Captured logging:
INFO:database.system.status: MyDatabase is online.
INFO:database.system.status: MyDatabase is now offline.
INFO:database.system.status: MyDatabase has now initiated.
我只想将上述“捕获的日志记录”控制台输出转储到文件中进行分析。
我该怎么办?请让我知道。
答案 0 :(得分:0)
所以这取决于您的操作方式,但是如果您使用的是behave_main
,则可以执行以下操作:
from behave.__main__ import main as behave_main
args = ['--outfile=/path/to/your/log/directory/output.log']
behave_main(args)
如果您通过命令行运行测试,请使用-o
或--outfile
进行标记并附加日志名称。