我正在使用
log4rs.yaml
和 .env
等文件。
使用
cargo build
时,不再找到log4rs.yaml
。
log4rs::init_file("log4rs.yaml", Default::default()).unwrap();
miscellaneous::check_env_variable();
当我运行二进制文件时,出现以下错误消息:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: No such file or directory (os error 2)', src/main.rs:27:58
我尝试使用构建脚本但没有成功,不知道如何继续或者这是否真的是这里的问题
既然您评论说这些文件都位于项目文件夹/目录的根目录中,您可能(最初)正在寻找的是名为:
CARGO_MANIFEST_DIR
的环境变量。
此变量一旦读取(
std::env::var
)将返回 Cargo.toml 所在文件夹/目录的绝对路径。
最初的解决方案如下所示:
// ...
let cargo_path = env::var("CARGO_MANIFEST_DIR").unwrap();
let yaml_path = format!("{}/log4rs.yaml", cargo_path);
log4rs::init_file(yaml_path, Default::default()).unwrap();
// ...
最终的解决方案实际上可能需要您(以某种方式):
log4rs.yaml
设置 默认路径,例如:
~/.config/my_app/log4rs.yaml
或 ~/.my_app/log4rs.yaml
log4rs.yaml
文件的任意路径,以便我们可以从其他地方(包括您的开发文件夹内)获取它。