训练日志设置:更新了log的名字和路径,为什么没有生效?-模型训练论坛-模型训练-社区 | AheadAI
幻灯片-社区 | AheadAI
图标卡片
这是一个图标卡片示例
原创作品
这是一个图标卡片示例
灵感来源NEW
这是一个图标卡片示例
系统工具 GO
这是一个图标卡片示例

训练日志设置:更新了log的名字和路径,为什么没有生效?

问题:我在训练脚本中将log的命名更改如下,

logging.basicConfig(filename="training_log_large.log", level=logging.INFO, format="%(asctime)s - %(message)s")

为什么没有正常生成log呢?打印出来的log文件名仍然是旧的,如下:

image

这是因为 logging.basicConfig 只能在第一次调用时生效。如果脚本中或之前的运行环境已经设置了日志文件名(例如,设置为 training_log.log),那么后续对 basicConfig 的调用将不会改变日志的输出目标。

解决方法

如果你想强制更新日志配置,可以在调用 logging.basicConfig 之前,重置已有的日志处理器。以下是具体步骤:

1. 重置日志处理器

logging.basicConfig 之前,清除所有现有的日志处理器:

# 清除所有的日志处理器
for handler in logging.root.handlers[:]:
    logging.root.removeHandler(handler)

# 重新配置日志
logging.basicConfig(filename="training_log_large.log", level=logging.INFO, format="%(asctime)s - %(message)s")

2. 验证日志文件路径

执行上面代码后,再次使用以下命令来验证日志文件路径:

print(f"Logging to file: {logging.getLogger().handlers[0].baseFilename}")

这应该会显示 training_log_large.log 文件的路径,而不再是之前的 training_log.log

3. 注意事项

  • 确保在 basicConfig 之前没有其他地方显式或隐式初始化日志设置。
  • 清除日志处理器后重新设置日志可以避免多个日志输出冲突的问题。
请登录后发表评论

    没有回复内容