【问题标题】:Capture/redirect console output to file捕获/重定向控制台输出到文件
【发布时间】:2018-11-28 23:37:11
【问题描述】:

所以,我相信这个问题可以应用于任何生成日志到控制台的 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 = Truecontext.config.log_capture = True。 我在行为环境中缺少什么。

Behave 框架还在“上下文”中提供了一个变量。它的“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.

我只想将上面的“Captured Logging”控制台输出转储到文件中进行分析。

我该怎么做?请告诉我。

【问题讨论】:

    标签: python file-io console stdout python-behave


    【解决方案1】:

    所以这取决于你是怎么做的,但是如果你使用behave_main,那么你可以做如下的事情:

    from behave.__main__ import main as behave_main
    
    args = ['--outfile=/path/to/your/log/directory/output.log']
    behave_main(args)
    

    如果您通过命令行运行测试,请使用 -o--outfile,标记并附加您的日志名称。

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 2021-10-21
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多