1个稳定版本
1.0.0 | 2020年3月29日 |
---|
#5 in #slog-rs
14KB
193 行
slog_mongodb
MongoDB扩展,用于Rust的日志库slog-rs。将slog消息序列化为BSON文档并存储在MongoDB集合中。为了减轻数据库的压力,日志消息被缓冲,并按可配置的时间间隔发送。
使用方法
use slog::*;
fn main() {
let client = mongodb::Client::with_uri_str("mongodb://127.0.0.1:27017/").unwrap();
let db = client.database("some_db");
let logs = db.collection("logs");
let drain = slog_mongodb::MongoDBDrain::new(logs, std::time::Duration::from_secs(5)).fuse();
let drain = slog_async::Async::new(drain).build().fuse();
let log = Logger::root(drain, o!());
info!(log, "Hello MongoDB!");
}
注意
默认情况下,日志消息包含以下值
- "ts": RFC3339时间戳
- "level": "TRCE", "INFO", "WARN", "ERRO"或"CRIT"
- "leveli": 4 - 0
- "msg": 日志消息
可以通过以下方式构建drain来更改此行为
use slog::*;
fn main() {
let client = mongodb::Client::with_uri_str("mongodb://127.0.0.1:27017/").unwrap();
let db = client.database("some_db");
let logs = db.collection("logs");
let drain = MongoDBDrainBuilder::new(logs, std::time::Duration::from_secs(5))
.add_key_value(o!("key" => "value")).build();
let drain = slog_async::Async::new(drain).build().fuse();
let log = Logger::root(drain, o!());
info!(log, "Hello MongoDB!");
}
致谢
序列化设计以及整体设计是从slog-json中复制的。
依赖关系
~27MB
~600K SLoC