1个稳定版本

1.0.0 2020年3月29日

#5 in #slog-rs

MIT 许可证

14KB
193

Build Status codecov

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