syslog 与journald 是如何纠缠在一起的?

syslog 与journald 是如何纠缠在一起的?

我将日志设置为将日志大小限制为 5GB,/etc/systemd/journald.conf 并认为一切都很好。然后,昨天,我意识到我的/var/log/syslog文件实际上有 12GB 大。

我相信的是journalctl从不同的日志位置读取消息,并且该SystemMaxUse选项旨在限制它们的大小。但看起来,事实并非如此。

我现在最终使用了 logrotate 和 size 选项,但我更愿意了解这个概念以供将来使用。

看起来我还没有真正理解日志是如何/var/log与journald/journalctl纠缠在一起的。请赐教!

答案1

systemd-journald还写在/run/log/journal.

--flush

如果启用了持久存储,则要求日志守护进程将存储在的所有日志数据刷新/run/log/journal/到 中。/var/log/journal/在操作完成之前,此调用不会返回。

请注意,此调用是幂等的:数据仅在系统运行时期间刷新/run/log/journal/一次/var/log/journal/(但见--relinquish-var下文),并且如果已经发生这种情况,则此命令会干净地退出而不执行任何操作。该命令有效保证了/var/log/journal/返回时所有数据都被刷新。

--relinquish-var

要求日志守护进程进行相反的操作--flush:如果请求,守护进程将进一步写入日志数据/run/log/journal/并停止写入/var/log/journal/。随后调用 会--flush导致日志输出切换回/var/log/journal/,请参见上文。

答案2

日志限制(SystemMaxUse ) 仅对journald 进行限制自己的文件在/var/log/journal.它不知道也不关心其他日志文件。这是其他应用程序的责任。

相关内容