我不太明白从 Journald 到 Rsyslog 的转发。
基本上我的理解是“管道”的构建方式如下:
内核通过 printk() 记录日志 → /proc/kmesg ← rsyslog → 根据 rsyslog.conf 中的规则写入日志文件
用户空间日志 → /dev/log ← rsyslog → 根据 rsyslog.conf 中的规则写入日志文件
这会产生各种日志文件,例如 /var/log/syslog 等。
正如在 rsyslog.conf 片段中一样,来自设施“用户”的消息也会写入系统日志,因此会存储两次,对吧?
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
到目前为止很清楚,如果我没弄错的话。
但是,/dev/log 似乎链接到
$ ls -lah /dev/log
lrwxrwxrwx 1 root root 28 Apr 15 16:30 /dev/log -> /run/systemd/journal/dev-log
这是为什么?
回到我真正的问题。 Journald 从哪里获取日志?我只知道systemd-cat。或者也来自 /dev/log // /run/systemd/journal/dev-log?
Journald 将日志转发到 syslog(Debian 中的标准,根据https://manpages.debian.org/testing/manpages-de/journald.conf.5.de.html)。难道每条消息不应该在系统日志中重复吗?
为了结束这个循环,我现在处于这一点是因为我正在规划一个日志管理环境,并且面临着从哪里获取日志的问题。
我预先感谢您并希望您能帮助我。