systemd-journal-logger 0.3.0

Systemd journal logger for the log facade
Documentation

systemd-journal-logger

A pure Rust log logger for the systemd journal.

This logger used libsystemd and has no dependency on the libsystemd C library.

Usage

[dependencies]
log = "^0.4"
systemd-journal-logger = "0.3.0"

Then initialize the logger at the start of main:

use log::{info, LevelFilter};

fn main() {
    systemd_journal_logger::init();
    log::set_max_level(LevelFilter::Info);

    info!("Hello systemd journal");
}

You can also add additional fields to every log message, such as the version of your executable:

use log::{info, LevelFilter};

fn main() {
    let version = env!("CARGO_PKG_VERSION");
    systemd_journal_logger::init_with_extra_fields(vec![("VERSION", version)]).unwrap();
    log::set_max_level(LevelFilter::Info);

    info!("Hello systemd journal");
}

These extra fields appear in the output of journalctl --output=verbose or in any of the JSON output formats of journalctl.

See systemd_service.rs for a simple example of logging in a systemd service which automatically falls back to a different logger if not started through systemd.

Related projects

Both loggers use mostly the same fields and priorities as this implementation.

License

Either MIT or Apache 2.0, at your option.