已合并
test(logging): add testcase for torch._logging.set_logs #42018
木路折创建于 7月18日
test(logging): add testcase for torch._logging.set_logs #42018
已合并
木路折创建于 7月18日
木路折
木路折
7月18日

【合入来源】

关联社区 issue:https://gitcode.com/Ascend/pytorch/issues/2899

pytorch 官方社区没有针对 torch._logging.set_logs 的独立、充分测试用例,本次按任务要求新增测试文件补齐该 API 的验证。

【修改方案】

一、API 功能说明

torch._logging.set_logs(*args, **kwargs)
  用于在运行时动态配置 PyTorch 内部日志系统。
  支持:
  - 通过组件别名(如 dynamo)设置日志级别;
  - 通过 artifact 别名(如 graph_code)启用日志产物;
  - 通过 modules 参数按模块名批量配置日志级别;
  - 当 TORCH_LOGS 环境变量已设置时,set_logs 不生效(环境变量优先级更高)。

二、测试用例完备性说明

新增 test/test_library_logging.py,从以下几个维度验证 torch._logging.set_logs

  1. 默认状态重置

    • test_set_logs_default_clears_state:调用 set_logs() 无参时清空日志状态。
  2. 组件日志级别设置

    • test_set_logs_enable_component:通过别名设置日志级别并校验 logger 级别。
  3. Artifact 启用

    • test_set_logs_enable_artifact:通过 artifact 别名启用日志产物。
  4. modules 参数

    • test_set_logs_modules:通过 modules 参数批量配置已注册别名。
  5. 异常参数校验

    • test_set_logs_invalid_artifact_value:artifact 传非 bool 值抛出 ValueError
    • test_set_logs_invalid_log_level:日志级别非法时抛出 ValueError
    • test_set_logs_invalid_module_namemodules 中传入未注册名称时抛出 ValueError
  6. 环境变量优先级

    • test_set_logs_env_var_precedence:当 TORCH_LOGS 已设置时,set_logs 不修改日志状态。

三、NPU 适配

torch._logging.set_logs 为纯 Python 层日志配置接口,不涉及算子调用、张量计算或设备内存操作,与 CPU/GPU/NPU 完全解耦。昇腾 NPU 环境下无需修改 API 源码,测试中也无需导入 torch_npu 或创建 NPU 张量,可直接复用。

【资料变更】

不涉及。torch._logging.set_logs 属于 PyTorch 内部日志模块私有接口,本 PR 仅补充测试用例,无需在 docs/zh/api/native_api 中刷新资料。

【接口变更】

不涉及。本 PR 仅新增测试用例,未修改公共接口。

【功能验证】

已在本地环境执行测试命令:

TORCH_DEVICE_BACKEND_AUTOLOAD=0 python test/test_library_logging.py

输出:

...W0724 05:48:37.119000 86516 site-packages/torch/_logging/_internal.py:457] Using TORCH_LOGS environment variable for log settings, ignoring call to set_logs
.....
----------------------------------------------------------------------
Ran 8 tests in 0.068s

OK

【CheckList】

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 木路折 的贡献)
木路折木路折
7月18日 创建了 pull request,commit 499d91c1
atomgit-bot
atomgit-bot
7月18日 评论:

变更摘要

该PR新增测试文件 test/test_library_logging.py,为 torch._logging.set_logs 接口补充了完整的单元测试覆盖。测试类 TestLibraryLogging 验证了组件日志级别设置、artifact 开关、模块别名、无效参数校验以及环境变量 TORCH_LOGS 优先级等核心行为。

主要改动

  • 新增测试文件 test/test_library_logging.py:创建了独立的测试模块,使用 preserve_log_state() 上下文管理器确保各测试用例之间日志状态隔离。
  • 验证默认清零行为test_set_logs_default_clears_state 测试无参调用 set_logs() 后,artifact 状态和日志级别对被正确重置。
  • 验证组件与 artifact 设置test_set_logs_enable_componenttest_set_logs_enable_artifact 分别测试通过关键字参数设置已注册组件(如 dynamo)的日志级别和启用 artifact(如 graph_code)。
  • 验证 modules 别名与错误处理test_set_logs_modules 测试通过 modules 字典参数设置别名组件;test_set_logs_invalid_artifact_valuetest_set_logs_invalid_log_leveltest_set_logs_invalid_module_name 覆盖了非法参数时抛出 ValueError 的场景。
  • 验证环境变量优先级test_set_logs_env_var_precedence 使用 unittest.mock.patch.dict 模拟 TORCH_LOGS 环境变量设置后,确认 set_logs() 调用被忽略,确保环境变量具有更高优先级。
likedislike
atomgit-bot
atomgit-bot
7月18日 评论:

代码审查

审查总结

该 diff 是新增的测试文件 test/test_library_logging.py,为 torch._logging.set_logs 添加了 8 个测试用例。经审查,发现 2 个 P2 级别问题,无 P0/P1 问题。

文件审查结果

  • test/test_library_logging.py:发现 2 个问题(已上报)

问题摘要

优先级 数量 说明
P0 0
P1 0
P2 2 测试逻辑缺陷:无效模块名测试中使用了非法日志级别值(True),可能导致假阳性;环境变量优先级测试中 _init_logs() 未在异常路径上被调用
P3 0

整体风险判断:低风险。两个问题均为测试可靠性问题,不影响生产代码。修复后测试将更加稳健,避免在实现细节变化时产生假阳性或级联测试失败。

⚠️ 已识别出整体风险,但无法提取行内评论,请参考整体评估。

likedislike
ascend-robotascend-robot成员
7月18日 添加了label:ascend-cla/no
此处折叠了178条消息 查看更多
li_jing_hw成员
24 天前 评论:

/approve

likedislike
ascend-robotascend-robot成员
24 天前 添加了label:approvedlgtm
ascend-robotascend-robot成员
24 天前 合入了pull request
ascend-robot
ascend-robot成员
24 天前 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike
ascend-robot
ascend-robot成员
24 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#13575 [ commitID:78a034d4 ] 已完成
likedislike