38 个版本
0.6.2 | 2023 年 3 月 23 日 |
---|---|
0.6.1 | 2022 年 4 月 15 日 |
0.6.0 | 2020 年 3 月 9 日 |
0.5.9 | 2019 年 10 月 23 日 |
0.1.3 | 2014 年 12 月 28 日 |
#13 在 调试 类别中
每月下载量352,104
被 484 个 包使用 (直接使用 358 个)
305KB
2K SLoC
fern
为 Rust 提供简单、高效的日志记录。
fern 0.4.4, 0.5.*, 0.6.* 安全警告 - colored
功能 + 全局分配器
我们的一个下游依赖库 atty 通过 colored 存在着一个不安全性问题: https://rustsec.org/advisories/RUSTSEC-2021-0145.html。
这种情况会出现在以下情况下:如果您正在使用 colored
(包或我们的功能)和自定义的全局分配器。
我将发布 fern
0.7.0,移除 colored
作为依赖项。这可能会添加另一个颜色包,或者只是记录使用替代方案(如 owo-colors
+ enable-ansi-support
)的使用。
在此期间,如果您正在使用 #[global_allocator]
,我强烈建议移除 fern/colored
功能。
或者,为了最小化代码更改,您还可以启用 colored/no-colors
功能
cargo add colored --features no-color
使用 no-color
功能,受影响的代码仍然存在,但除非您手动使用以下任何 API,否则它将不会被调用
colored::control::set_override
colored::control::unset_override
colored::control::ShouldColorize::from_env
colored::control::SHOULD_COLORIZE
(引用此lazy_static!
变量将初始化它,运行受影响的代码)
有关进一步讨论,请参阅https://github.com/daboross/fern/issues/113。
日志配置是递归分支的,就像蕨类植物:格式化、过滤器输出可以递归应用于匹配越来越具体的日志类型。Fern为Rust标准log crate提供基于构建器的配置支持。
//! With fern, we can:
// Configure logger at runtime
fern::Dispatch::new()
// Perform allocation-free log formatting
.format(|out, message, record| {
out.finish(format_args!(
"[{} {} {}] {}",
humantime::format_rfc3339(std::time::SystemTime::now()),
record.level(),
record.target(),
message
))
})
// Add blanket level filter -
.level(log::LevelFilter::Debug)
// - and per-module overrides
.level_for("hyper", log::LevelFilter::Info)
// Output to stdout, files, and other Dispatch configurations
.chain(std::io::stdout())
.chain(fern::log_file("output.log")?)
// Apply globally
.apply()?;
// and log using log crate macros!
info!("hello, world!");
所有功能的示例请参阅API文档。使用此示例命令行程序查看Fern的使用情况。
项目状态
Fern项目主要是由GitHub上的我自己,@daboross维护的。这是一个业余项目,但我希望保持其高质量。
贡献
由于这是一个业余项目,因此非常欢迎贡献!
目前,您可以通过在应用程序中使用Fern来贡献,并查看其不足之处。当前的库有一个坚实的基础,但它缺少功能,并且我可能无法预见到您的用例。
如果您有一个Fern未涵盖的用例,请提交问题。如果您实现了该功能,这将对我、希望为该项目做出贡献的人以及您自己都非常有用。
如果您有兴趣帮助修复一个现有问题或您刚刚提交的问题,将非常感谢您的帮助。
有关贡献的详细信息,请参阅CONTRIBUTING。
依赖项
~0–8.5MB
~65K SLoC