| Crates.io | syslog_proto |
| lib.rs | syslog_proto |
| version | 0.1.0-alpha0 |
| created_at | 2025-10-20 03:29:01.331292+00 |
| updated_at | 2025-10-20 03:29:01.331292+00 |
| description | I/O-free implementation of the syslog protocol |
| homepage | https://pub.npry.dev/syslog_proto |
| repository | https://pub.npry.dev/syslog_proto |
| max_upload_size | |
| id | 1891354 |
| size | 56,920 |
syslog_protoThis crate implements the syslog protocol as described in
RFC5424. It intentionally does not implement any I/O
functionality and provides protocol structures and parsing in a #![no_std]-compatible
way.
The intent behind this crate was originally to support being a syslog receiver for nginx access
logs — I was going to write a lightweight bridge that put them on NATS or
MQTT, with the goal of making it easier to monitor and action recalcitrant scraper bots (while
avoiding generating a huge access.log file that would require rotation).
I found that geoip filtering was an easier approach, but was
still interested in completing the crate because the alternatives I came across with a few quick
Google searches (syslog, possibly others) only provide
the message-generation logic and try to provide utility by integrating with the Rust logging
ecosystem. The goal here is not to do that, but to expose the actual syslog message primitives at
relatively low overhead.
I've yet to do any benchmarking or use this in anger. Some tests are included — it parses the example messages from the RFC, and there are some proptests that I ran with a reasonably high (100k) iteration count.
#[deny(missing_docs)]nom does)#[cfg_attr(feature = "serde", serde::Serialize, serde::Deserialize)]