Journalctl 和 syslog 可以并行使用吗?

Journalctl 和 syslog 可以并行使用吗?

我很难理解 Linux 上的日志记录是如何工作的。

自从包含了 systemd 之后,它似乎变得容易了一些,但是我仍然有几个概念不能完全理解。

给定一个带有 journalctl 的系统,我想将一些日志消息发送到远程主机。为此,我安装了 rsyslog 并配置了 freeradius,以便它将其日志输出到 local3,然后配置 rsyslog 以将 local3 下的这些消息转发到远程 syslog 服务器。现在,系统日志在 rsyslog 和 journalctl 之间共享吗?这会引起任何类型的冲突吗?

除此之外:谁控制写入 /var/log/messages 的内容?以及某个应用程序如何将其日志输出到此文件?它是由 rsyslog 管理吗?还是由 systemd 管理?

如果有人能帮助我了解整个 Linux 日志服务,那就太好了。

答案1

journald 和 rsyslog 之间的链接通过使用其输入和输出模块在 rsyslog 端进行控制;分别有和imjournal用于omjournal读取和写入日志。

因此,如果您向 rsyslog 写入某些内容,则只有在您配置了模块后,它才会出现在 journald 中omjournal

rsyslog“拥有” /var/log/messages,常用的 syslog API 将允许应用程序写入它。如果imjournal配置了模块,日志消息也可以在那里结束。

本简短的 RHEL 指南以几乎相同的方式解释事物。

答案2

具有 journalctl 的系统是日志系统,这意味着它们使用日志来处理所有 syslog 条目。默认情况下,这些系统不会将日志写入 /var/log/secure、/var/log/maillog/ /var/log/messages...

带有 rsyslog 的系统将 syslog 条目写入 /var/log 指令中的特定文件。有关此条目的设置(哪些日志记录到哪些文件)写入 /etc/rsyslog.conf

两者都使用 syslog 协议,但可以共享。因此,如果您在同一台机器上使用 rsyslog 和 journalctl,则不会出现任何问题。

相关内容