Skip to content
This repository was archived by the owner on Jun 16, 2026. It is now read-only.
This repository was archived by the owner on Jun 16, 2026. It is now read-only.

[P3] rbt_log.rs: logger_init 缺少幂等保护 #7

Description

@XiaoPengYouCode

问题

lib/src/rbt_infra/rbt_log.rs:73logger_init() 调用 log::set_boxed_logger() 来安装全局 logger。这是 Rust log 生态的全局单例——只能成功调用一次,第二次会返回 Err

当前函数名和签名(pub fn logger_init() -> RbtResult<Option<RbtLoggerGuard>>)看起来像可重复调用。如果被意外调用两次,第二次会 panic(map_err 将错误直接转换成 RbtError::LoggerInitError,但下游代码可能没有正确处理)。

修法

  • 方案 A(推荐):用 std::sync::OnceLock 做幂等保护,第二次调用直接返回 Ok(None),并记录一条 warn
  • 方案 B:在文档注释中明确写每个进程只调用一次,保持当前行为

位置

lib/src/rbt_infra/rbt_log.rs:73log::set_boxed_logger() 调用处

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions