fasyslog

Crates.iofasyslog
lib.rsfasyslog
version0.3.0
sourcesrc
created_at2024-11-11 19:06:46.05811
updated_at2024-11-17 07:58:46.895094
descriptionA fast syslog client written in Rust.
homepage
repositoryhttps://github.com/fast/fasyslog
max_upload_size
id1444103
size98,994
tison (tisonkun)

documentation

https://docs.rs/fasyslog

README

Fasyslog: A fast syslog client written in Rust

Crates.io Documentation MSRV 1.75 Apache 2.0 licensed Build Status

Description

Client library written in Rust to send messages to a Syslog server. Support implementations:

Getting Started

Add fasyslog to your Cargo.toml:

cargo add fasyslog
use fasyslog::Severity;

fn main() {
    let mut sender = fasyslog::sender::tcp_well_known().unwrap();
    let message = format!("Hello, fasyslog!");
    // send a message with RFC 3164 format
    sender.send_rfc3164(Severity::ERROR, message).unwrap();
    sender.flush().unwrap();

    // send a message with RFC 5424 format
    const EMPTY_MSGID: Option<&str> = None;
    const EMPTY_STRUCTURED_DATA: Vec<fasyslog::SDElement> = Vec::new();
    sender.send_rfc5424(Severity::ERROR, EMPTY_MSGID, EMPTY_STRUCTURED_DATA, message).unwrap();
    sender.flush().unwrap();
}

If you'd like to integrate with log crate, you can try the logforth example:

[dependencies]
log = { version = "..." }
logforth = { version = "...", features = ["syslog"] }
use logforth::append::syslog;
use logforth::append::syslog::Syslog;
use logforth::append::syslog::SyslogWriter;

fn main() {
    let syslog_writer = SyslogWriter::tcp_well_known().unwrap();
    let (non_blocking, _guard) = syslog::non_blocking(syslog_writer).finish();

    logforth::builder()
        .dispatch(|d| {
            d.filter(log::LevelFilter::Trace)
                .append(Syslog::new(non_blocking))
        })
        .apply();

    log::info!("This log will be written to syslog.");
}

Example

Check the examples directory for more examples.

Documentation

Read the online documents at https://docs.rs/logforth.

Minimum Supported Rust Version (MSRV)

This crate is built against the latest stable release, and its minimum supported rustc version is 1.75.0.

The policy is that the minimum Rust version required to use this crate can be increased in minor version updates. For example, if Fasyslog 1.0 requires Rust 1.20.0, then Fasyslog 1.0.z for all values of z will also require Rust 1.20.0 or newer. However, Fasyslog 1.y for y > 0 may require a newer minimum version of Rust.

When to release a 1.0 version

I'm fine with the current API design and ready for a 1.0 release. Just leave a few months for feedback on the crate's usability. If you have any suggestions or feedback, please open an issue.

I'm going to release a 1.0 version as early as 2025-01.

License

This project is licensed under Apache License, Version 2.0.

Commit count: 15

cargo fmt