如何使用pytest.ini或yaml将pytest日志记录的默认日志文件夹更改为自定义

时间:2020-04-22 23:29:14

标签: python-3.x logging pytest

需要帮助, 我想从pytest.ini或使用yaml文件设置记录器,一切都很好,除了以下几点: 如果仅使用文件名,则在yaml或pytest.ini中使用硬编码的日志文件的文件夹,在这种情况下,我的日志文件保存在测试文件夹中,但是我需要将日志保存在自定义文件夹中。

我不想覆盖我的设置文件。

读取Yaml文件的方法

with open(f'{get_root_path()}\logging.yaml', 'r') as f:
    config = yaml.safe_load(f.read())
    logging.config.dictConfig(config)

yaml

info_file_handler:
    class: logging.handlers.RotatingFileHandler
    level: INFO
    formatter: standard
    filename: folder info.log
    maxBytes: 10485760 # 10MB
    backupCount: 20
    encoding: utf8

pytest.ini

[pytest]
log_cli = 1
log_cli_level = DEBUG
log_cli_format = %(asctime)s [%(levelname)8s]  %(name)s  %(message)s (%(filename)s:%(lineno)s)

log_name = test
log_file = pytest.log
log_file_level = DEBUG
log_file_format = %(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)
log_file_date_format=%Y-%m-%d %H:%M:%S

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用日志记录FileHandler来实现此目的。

尝试更改您的方法以读取yaml文件,如下所示:

with open(f'{get_root_path()}\logging.yaml', 'r') as f:
    config = yaml.safe_load(f.read())
    logging.config.dictConfig(config)
    current_log = logging.getLogger()
    fh = logging.FileHandler(os.path.join("you_folder_path", config["info_file_handler"]["filename"]))
    current_log.addHandler(fh)

在这里,config["info_file_handler"]["filename"]将为您提供与yaml文件中相同的文件名。因此,这将在自定义文件夹下创建一个名为folder info.log的相同日志文件。您可以根据需要更改文件名。

因此,基本上FileHandler定义了要记录到的文件。

希望这会有所帮助!