1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2017年12月26日 |
---|
#7 in #rfc-5424
26KB
533 代码行
此模块在 Rust 中实现了一个 RFC 3164 IETF 系统日志协议解析器。代码是 Roguelazer 的更复杂的 5424 解析器的修改版。
此工具支持使用 serde 序列化解析的消息。
性能
在一个最近系统的1上,发布构建大约需要 8µs 来解析一个平均消息,大约 300ns 来解析最小合法消息。调试计时略差 - 大约 60µs 用于平均消息,大约 8µs 用于最小消息。一个单线程的系统日志服务器应该能够解析至少 100,000 条消息/s,只要你为解析器运行一个单独的线程。
lib.rs
:
RFC 5424 系统日志消息的解析器。不要与旧的 RFC 3164 BSD 系统日志协议混淆,许多系统仍然发出。
特别是,支持结构化数据字段。
通常,您只需使用字符串对象调用(重导出)的 parse_message
函数。
示例
一个简单的系统日志服务器
use syslog_rfc3164::parse_message;
use std::net::UdpSocket;
use std::str;
let s = UdpSocket::bind("127.0.0.1:10514").unwrap();
let mut buf = [0u8; 2048];
loop {
let (data_read, _) = s.recv_from(&mut buf).unwrap();
let msg = parse_message(str::from_utf8(&buf[0..data_read]).unwrap()).unwrap();
println!("{:?} {:?} {:?} {:?}", msg.facility, msg.severity, msg.hostname, msg.msg);
}
未实现的功能
- 理论上,您可以发送任意(非Unicode)字节作为系统日志消息的消息部分。Rust 没有方便的方式只将缓冲区的一部分视为 utf-8,所以我只是不支持它。大多数“真实”的系统日志服务器都会对此产生不良反应。
依赖关系
~1.3–2.4MB
~48K SLoC