logfence_client/lib.rs
1//! logfence client library.
2//!
3//! Provides a fluent [`MessageBuilder`] for constructing RFC 5424 syslog
4//! messages with JSON key-value payloads, and transport implementations for
5//! delivering them to a running [`logfenced`] daemon or directly to rsyslog.
6//!
7//! # Quick start
8//!
9//! ```rust,no_run
10//! use logfence_client::{MessageBuilder, UnixTransport, UnixDatagramTransport, now_rfc3339};
11//! use logfence_proto::syslog::{Facility, Severity};
12//!
13//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
14//! // Stream transport (octet-count framing) — for logfenced or rsyslog imuxsock stream.
15//! let transport = UnixTransport::new("/run/logfenced/logfenced.sock", 65536);
16//! // Datagram transport — for rsyslog imuxsock datagram or logfenced unix_dgram mode.
17//! // let transport = UnixDatagramTransport::new("/run/syslog", 65536);
18//!
19//! MessageBuilder::new(Facility::Local0, Severity::Info)
20//! .timestamp(now_rfc3339())
21//! .hostname("myhost")
22//! .app_name("myapp")
23//! .msgid("REQUEST")
24//! .kv("user_id", 42_u32)?
25//! .kv("action", "login")?
26//! .send(&transport)
27//! .await?;
28//! # Ok(())
29//! # }
30//! ```
31//!
32//! [`logfenced`]: https://github.com/hildstrom/logfence
33
34pub mod builder;
35pub mod error;
36pub mod transport;
37
38pub use builder::{now_rfc3339, MessageBuilder};
39pub use error::{BuildError, ClientError};
40pub use transport::{Transport, UnixDatagramTransport, UnixTransport};