You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无网络环境编译env_logger 0.3.5报错:log模块找不到set_logger函数

解决隔离网络下编译env_logger 0.3.5失败的问题

你遇到的核心问题是依赖版本不匹配:联网环境下Cargo会自动解析依赖约束,拉取和env_logger 0.3.5兼容的log版本,但隔离环境中缓存的log版本可能不符合要求,进而触发找不到'set_logger'函数的编译错误。

问题根源

env_logger 0.3.5明确依赖log ^0.3.0版本,而log 0.4.x版本开始移除了直接的set_logger函数,改用Builder模式实现日志初始化。如果隔离环境中Cargo使用了log 0.4+版本,就会因为API变动导致编译失败。

解决方案

方案1:通过vendor目录同步正确依赖(推荐)

在联网机器上预先下载所有兼容的依赖包,再完整复制到隔离环境:

  • 进入联网机器上的项目目录:
    cd project_name
    
  • 执行cargo vendor生成包含所有依赖的vendor目录:
    cargo vendor
    
  • 创建.cargo/config文件,配置Cargo从本地vendor目录读取依赖:
    [source.crates-io]
    replace-with = "vendored-sources"
    
    [source.vendored-sources]
    directory = "./vendor"
    
  • 将整个项目目录(包括vendor和.cargo/config)复制到隔离网络的机器上,执行cargo build即可正常编译。

方案2:手动指定log依赖版本

直接在Cargo.toml中强制指定兼容的log版本,避免Cargo拉取不兼容的版本:

[dependencies]
env_logger = "0.3.5"
log = "0.3.9"  # 与env_logger 0.3.5兼容的最新log 0.3.x版本

修改后在隔离环境重新执行cargo build即可。

内容的提问来源于stack exchange,提问作者scnerd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:34:56