9 releases (5 breaking)
0.7.0 | Dec 23, 2022 |
---|---|
0.5.1 | Oct 15, 2022 |
0.5.0 | Jan 28, 2022 |
0.4.1 | Nov 20, 2021 |
0.3.0 | Jun 7, 2021 |
#67 in Debugging
2,278 downloads per month
Used in 4 crates
21KB
222 lines
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.7.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
- rust-systemd provides a logger implementation based on the
libsystemd
C library. - slog-journald provides an slog logger for the systemd journal, also based on the
libsystemd
C library. - tracing-journald provides a tracing backend for the systemd journal, in a pure Rust implementation.
Both loggers use mostly the same fields and priorities as this implementation.
License
Either MIT or Apache 2.0, at your option.
Dependencies
~4.5MB
~100K SLoC