#journal #systemd #logging

systemd-journal-logger-memfd-syscall

系统日志记录器,用于日志门面(支持旧版glibc版本的分支)

1 个稳定版本

2.0.1 2023年10月20日
2.0.0 2023年10月18日

#44 in #journal

MIT/Apache

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

这两个日志记录器主要使用与这个实现相同的字段和优先级。

许可证

您可以选择 MITApache 2.0 许可证。

依赖关系

~360KB