需要帮助, 我想从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
谢谢。
答案 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
定义了要记录到的文件。
希望这会有所帮助!