使用Hydra配置时如何在代码中自定义日志文件名
解决Hydra环境下自定义日志文件名的问题
Hydra在启动时会自动初始化日志系统,这导致你后续调用logging.basicConfig()无法生效——因为basicConfig仅在日志系统未被初始化时才会生效。要实现自定义日志文件名,需要手动修改已有的日志配置:
import logging import hydra @hydra.main() def my_app(_cfg): # 获取根日志器 root_logger = logging.getLogger() # 移除Hydra默认的文件日志处理器 for handler in list(root_logger.handlers): if isinstance(handler, logging.FileHandler): root_logger.removeHandler(handler) # 添加自定义文件日志处理器 log_file = "custom_log_file.log" custom_file_handler = logging.FileHandler(log_file) # 配置日志格式(可根据需求调整,示例为Hydra默认风格) formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") custom_file_handler.setFormatter(formatter) root_logger.addHandler(custom_file_handler) # 使用日志器 log = logging.getLogger(__name__) log.info("测试自定义日志文件输出") if __name__ == "__main__": my_app()
说明
- 上述代码先移除Hydra自动添加的FileHandler,再添加自定义的文件处理器,日志会写入指定的
custom_log_file.log - 如果需要保留控制台日志输出,无需移除StreamHandler,仅针对FileHandler操作即可
内容的提问来源于stack exchange,提问作者gsoldier
相关产品推荐
相关产品推荐

