2个不稳定版本
0.2.0 | 2023年1月15日 |
---|---|
0.1.0 | 2022年9月11日 |
#447 in 调试
15KB
258 行
bunyarrs
bunyarrs
是一个非常具有偏见的、低性能的日志记录库,模仿了 node bunyan。
let logger = Bunyarr::with_name("my-module");
let foo = init_foo();
let bar = init_bar();
logger.info(vars! { foo, bar }, "initialisation complete");
将打印到stdout,一行(为了文档添加了空格)
{
"time":"2022-09-11T15:19:33.166395524Z",
"level":30,
"msg":"initialisation complete",
"name":"my-module",
"foo": 5,
"bar": {
"baz": 5,
"badger": "mushroom"
},
"hostname":"conqueeftador",
"pid":1337,
"v":0
}
配置
默认日志级别为 info
,因此将生成 info
或更高级别的日志。这可以通过环境变量 LOG_LEVEL
来控制,例如,LOG_LEVEL=error
将隐藏所有 debug
、info
或 warn
日志,但仍会显示 error
和 fatal
日志。
...为什么?
它比 eprintln!
更好,比 slog
更容易上手。
此 "bunyan" 格式由许多日志摄入工具支持。使用它可以在日志搜索期间节省您处理对象、多行字符串等。
该库旨在鼓励使用此格式,具体来说,出于故意,不支持格式字符串或任何动态字符串。
其他工具,如 bunyan rust 端口 和 pino-pretty,可以将这些日志转换回文本,如果您想将其作为文本查看。将上述输出通过 pino-pretty
管道的结果是
[16:19:33.166] INFO (my-module/1337): initialisation complete
foo: 5
bar: {
"baz": 5,
"badger": "mushroom"
}
v: 0
我需要支持...
文件、轮换?不。写入stdout,所有编排工具都很好地支持它。
线程、性能?不。使用 slog
生态系统,并查看他们的复杂性的理由。
对象、命名?使用 serde
生态系统工具。
现有的 rust-log 生态系统?抱歉,它们使用格式字符串,这是禁止的。
自定义格式化器?也许你想写自己的 vars!
宏?
有多慢?
Bunyarr::with_name()
尽量不做工作,例如,它预先加载主机名。
logger.info()
可能比你自己构建对象并写入更高效,但如果你小心,可能比你自己手动写出对象并写入要低效。Bunyarr 尽力做到非常小心,但不愿意为了速度而牺牲接口。
我应该在我的 Rust 库 中使用这个吗?
不。
贡献
cargo fmt
,cargo test
,github PRs 或 issues,请。
许可证
MIT OR Apache-2.0
依赖项
~1.9–10MB
~49K SLoC