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 在 数据库接口
24KB
430 行
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