添加什么到 python-behave 来创建日志文件?

What add to python-behave to create logging file?

当我使用 behave 时,日志记录在我的程序中不起作用。仅当我 运行 此程序作为 python 程序时,此代码才有效并创建日志 file_results_q.log。

当我使用 behave 时,我可以在 windows PowerShell 中看到 "test test",但没有创建日志 file_results_q.log。

我在 Windows PowerShell 中使用“--no-logcapture”来 运行 表现

代码:

import logging
logging.basicConfig(filename=r"D:\test\testy\logfile_results_q.log")
logging.info("test")
@given('project folder path: / {solver_name}')
def step_impl(context, solver_name):
    logging.info("test test")

我应该向这段代码添加什么,才能正确处理日志记录?

logging.basicConfig 正在配置根记录器。更好的是,创建您自己的记录器:

logger = logging.getLogger('logfile_results_q')
logger.setLevel(logging.DEBUG)
# create file handler which logs even debug messages
fh = logging.FileHandler(r"D:\test\testy\logfile_results_q.log")
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)
logger.info("test")

请注意 logger.info(),而不是 logging.info()

有关更多示例,请参阅 Logging Cookbook 页面。

python-behave 日志记录会覆盖您的基本配置。导入包时也是如此。最好指定自己的记录器。请参阅@ababak 或官方文档的答案:

https://docs.python.org/3/howto/logging.html

(搜索 'Configuring Logging')

日志模块有一个不为人知的 "feature"。 logging.basicConfig(...) 只能调用一次(如果你不破解模块)。对 logging.basicConfig(...) 的第二次调用被忽略,因为日志记录模块已经设置。

因此,behave需要设置日志模块,否则其他配置方面将无法工作。如果您尝试自己做,日志记录模块(和行为)"bites you".

另请参见: