4 个版本

0.2.2 2021 年 2 月 19 日
0.2.1 2020 年 6 月 15 日
0.2.0 2020 年 6 月 15 日
0.1.0 2020 年 6 月 14 日

#1358数据库接口

MIT 许可证

24KB
430

Build Status codecov crates.io docs.rs

slg-telegraf

Telegraf 排放用于 slog-rs。格式化日志消息,并通过 TCP 或 UDP 发送到 Telegraf。

请随意提交问题或拉取请求。

用法

该日志记录器支持 Telegraf 的 TCP 和 UDP 套接字监听器,并根据 行协议序列化消息。

Telegraf 配置

[[inputs.socket_listener]]
  service_address = "tcp://127.0.0.1:8094"

[[inputs.socket_listener]]
  service_address = "udp://127.0.0.1:8094"

Rust 示例

use slog::{Logger, Drain};
use slog_telegraf::{TelegrafDrain};

fn main() {
    let drain = TelegrafDrain::new("tcp://127.0.0.1:8094".into(), "measurement".into()).unwrap().fuse();
    let drain = slog_async::Async::new(drain).build().fuse();
    
    let log = Logger::root(drain, o!("ver" => "1.2.1"));
    info!(log, "log"; "field_key" => 10);
}

注意事项

被当作字段处理的是在日志调用中传递的值。在上面的例子中,field_key=10i 是一个字段。所有其他值都被当作标签处理。在上面的例子中,msg=log,mod=your_crate::main,ver=1.2.1 是标签。由于标签不能包含空格,因此用户需要确保标签值不包含空格或逗号。

此外,标签和字段键也不能包含空格。因此,日志消息以及所有的 slog 值键都不能包含空格。slg-telegraf 不会验证消息。相反,它们将被 Telegraf 过滤,不会出现在数据库中。

由于 InfluxDB 不认为没有字段的消息(除了日志消息之外的参数)是有效的,slg-telegraf 将在字段为空的消息中附加模拟字段 '_dummy=1i'。

性能

该项目包含一个用于序列化的基准测试。在测试机器上,序列化器能够每秒序列化 ~1 mio 条消息。

如果您更关心性能而不是每个日志消息是否真正到达,这也是 slg 的设计理念,建议使用 UDP 套接字。

依赖关系

~1.5MB
~51K SLoC