1 个稳定版本
2.0.1 |
|
---|---|
2.0.0 | 2023年10月18日 |
#44 in #journal
34KB
396 行
systemd-journal-logger-memfd-syscall
这是一个纯Rust log 日志记录器,用于 systemd日志 (支持旧版glibc版本的分支)。
关于此分支
此软件包是对 systemd-journal-logger 的分支。此分支存在的原因仅是 systemd-journal-logger
的维护者 不打算支持2.27以下的glibc版本。
此分支中包含的唯一修改是调用 memfd_create
系统调用(从Linux内核3.17开始可用),而不是使用 memfd_create()
libc 函数,在glibc中它从2.27版本开始可用,而Rust支持glibc >= 2.17。
此分支将尝试合并上游的所有更改,并以与上游相同的方式发布版本。
用法
$ cargo add systemd-journal-logger-memfd-syscall
然后在 main
的开始处初始化记录器
use log::{info, warn, error, LevelFilter};
use systemd_journal_logger_memfd_syscall::JournalLog;
JournalLog::new().unwrap().install().unwrap();
log::set_max_level(LevelFilter::Info);
info!("hello log");
warn!("warning");
error!("oops");
您还可以为每个日志消息添加额外的字段,例如您的可执行文件版本
use log::{info, warn, error, LevelFilter};
use systemd_journal_logger_memfd_syscall::JournalLog;
JournalLog::new()
.unwrap()
.with_extra_fields(vec![("VERSION", env!("CARGO_PKG_VERSION"))])
.with_syslog_identifier("foo".to_string())
.install().unwrap();
log::set_max_level(LevelFilter::Info);
info!("this message has an extra VERSION field in the journal");
这些额外字段会出现在 journalctl --output=verbose
的输出中,或在 journalctl
的任何JSON输出格式中。
有关在systemd服务中记录日志的简单示例,请参阅 systemd_service.rs。
相关项目
- rust-systemd 提供了一个基于
libsystemd
C库的 日志记录器实现。 - slog-journald 为 systemd 日志提供了一个基于 C 库
libsystemd
的 slog 日志记录器。 - tracing-journald 提供了一个基于纯 Rust 的 systemd 日志跟踪后端。
这两个日志记录器主要使用与这个实现相同的字段和优先级。
许可证
您可以选择 MIT 或 Apache 2.0 许可证。
依赖关系
~360KB