16 个版本 (4 个稳定版)
1.0.3 | 2023 年 8 月 13 日 |
---|---|
1.0.2 | 2023 年 7 月 26 日 |
1.0.1 | 2023 年 6 月 20 日 |
0.5.3 | 2023 年 4 月 3 日 |
0.5.2 | 2023 年 3 月 30 日 |
#109 在 调试 中排名
每月下载量 5,987
在 9 个 代码包 (8 个直接) 中使用
27KB
399 行
structured-logger
为 log crate 实现的日志记录器,可以同步或异步地以 JSON、CBOR 或其他格式记录结构化值到文件、stderr、stdout 或其他目的地。
它受到了 std-logger 的启发。
使用方法
请参阅示例和 API 文档 以获取更多信息。
示例
简单示例
use serde::Serialize;
use structured_logger::{async_json::new_writer, unix_ms, Builder};
#[tokio::main]
async fn main() {
// Initialize the logger.
Builder::with_level("info")
.with_target_writer("*", new_writer(tokio::io::stdout()))
.init();
let kv = ContextLog {
uid: "user123".to_string(),
action: "upate_book".to_string(),
};
log::info!("hello world");
// This log will be written to stdout:
// {"level":"INFO","message":"hello world","target":"simple","timestamp":1679745592127}
log::info!(target: "api",
method = "GET",
path = "/hello",
status = 200_u16,
start = unix_ms(),
elapsed = 10_u64,
kv = log::as_serde!(kv);
"",
);
// This log will be written to stdout:
// {"elapsed":10,"kv":{"uid":"user123","action":"upate_book"},"level":"INFO","message":"","method":"GET","path":"/hello","start":1679745592127,"status":200,"target":"api","timestamp":1679745592127}
}
#[derive(Serialize)]
struct ContextLog {
uid: String,
action: String,
}
- 记录恐慌示例: https://github.com/iorust/structured-logger/blob/main/examples/panic_log.rs
- 异步日志示例: https://github.com/iorust/structured-logger/blob/main/examples/async_log.rs
- 自定义写入器示例: https://github.com/iorust/structured-logger/blob/main/examples/custom.rs
许可证
版权所有 © 2023-present IO Rust。
iorust/structured-logger
根据 Apache 许可证 2.0 版 或 MIT 许可证 在您选择下授权。
依赖项
~3–11MB
~97K SLoC