如何使用 systemd-journald 禁用日志重复

如何使用 systemd-journald 禁用日志重复

我刚刚安装了带有 debian bullseye 的树莓派,我注意到它/var/log既有文本格式的传统日志文件,例如kern.logdaemon.logsyslog,也journaljournalctl.这些似乎是重复的,我只使用journalctl而不想要文本文件。

如何禁用传统方式并确保不遗漏任何日志条目,即journalctl拥有一切?

这是 的列表/var/log,请注意文本文件和目录的存在journal

total 960
-rw-r--r--  1 root root              3137 Jul  6 17:51 alternatives.log
drwxr-xr-x  2 root root              4096 Jul  6 18:02 apt
-rw-r-----  1 root adm              12453 Jul  6 18:02 auth.log
-rw-r--r--  1 root root                 0 Apr  4 16:41 bootstrap.log
-rw-rw----  1 root utmp              1600 Jul  6 17:27 btmp
-rw-r-----  1 root adm             131074 Jul  6 18:03 daemon.log
-rw-r-----  1 root adm               4356 Jul  6 17:42 debug
-rw-r--r--  1 root root            109320 Jul  6 18:02 dpkg.log
-rw-r--r--  1 root root                 0 Apr  4 16:41 faillog
-rw-r--r--  1 root root               484 Jul  6 17:51 fontconfig.log
drwxr-sr-x+ 3 root systemd-journal   4096 Apr  4 16:41 journal
-rw-r-----  1 root adm             169704 Jul  6 18:03 kern.log
-rw-rw-r--  1 root utmp            296296 Jul  6 17:54 lastlog
-rw-r-----  1 root adm             168196 Jul  6 18:03 messages
drwx------  2 root root              4096 Apr  4 16:41 private
drwxr-xr-x  3 root root              4096 Apr  4 16:28 runit
-rw-r-----  1 root adm             305804 Jul  6 18:03 syslog
-rw-r-----  1 root adm               1413 Jul  6 17:42 user.log
-rw-rw-r--  1 root utmp             12000 Jul  6 17:54 wtmp

答案1

Artem 的评论很好,非常感谢。上一篇关于同一主题的文章的链接也是一个很好的解释。我随后进行了清除rsyslog,一切仍然正常,没有任何日志重复。

如上所述,我的动机是log2ram在树莓派上使用,以减少因写入日志而导致的 SD 卡磨损。然而,内存文件系统不断被填满。

删除rsyslog显着简化了使用,log2ram因为最大日志大小是可预测的。可以设置最大大小,这里是20MB,如下:sudo perl -pe 's/^#?SystemMaxUse=.*$/SystemMaxUse=20M/g' -i /etc/systemd/journald.conf

由于不再写入其他日志文件并journald确保最大大小,因此logrotate不再需要配置。而且zram压缩也已经过时了,因为journald格式是二进制的。又好又简单。

希望这对某人有帮助。

答案2

没有必要完全删除 rsyslog。例如,人们可能希望避免重复日志消息,但仍然在脚本中使用记录器来写入自定义日志条目。

ForwardToSyslog=yes要关闭从 systemd-journald 到 rsyslog 的日志转发,更改日志配置中的行就足够了。在我运行 openSUSE Leap 15.4 的系统上,这不是在 中/etc/systemd/journald.conf,而是在/usr/lib/systemd/journald.conf.d/30-rsyslog.conf.您的系统上可能会有所不同。

将此值更改为 no 并重新启动 systemd-journald 服务后,日志转发应该关闭。通过观察 /var/log/messages 可以轻松检查。

相关内容