我刚刚安装了带有 debian bullseye 的树莓派,我注意到它/var/log
既有文本格式的传统日志文件,例如kern.log
、daemon.log
和syslog
,也journal
有journalctl
.这些似乎是重复的,我只使用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 可以轻松检查。