`logger` 在 Arch Linux 中将其消息记录到哪里?

mic*_*has 19 arch-linux systemd logger systemd-journald

logger命令通过 syslog 记录一个条目,它通常将该行放入某个文件中,例如/var/log/messages.

如果我正确理解Arch Linux 中的文档,所有日志记录都是通过 systemd 完成的,但是我找不到logger使用journalctl.

  • logger在 Arch Linux 中给出的消息究竟会发生什么?
  • 日志条目存储在哪里?(快速 grep 建议/var/log/journal/*/system.journal。)
  • 如何访问此日志?(我需要任何特殊选项journalctl吗?)

str*_*gee 17

因为日志消息没有出现在日志中的任何地方,我怀疑您没有正确设置系统日志到日志转发,并且消息只是被丢弃了。由于您在 Arch 上,这很容易解决。确保syslog-ng安装了软件包:

pacman -S syslog-ng
Run Code Online (Sandbox Code Playgroud)

然后确保它在启动时启用:

systemctl enable syslog-ng
Run Code Online (Sandbox Code Playgroud)

最后,由于启用服务不会自动启动它们,启动服务:

systemctl start syslog-ng
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此 Arch Wiki 页面

以下是有关此问题发生原因的一些背景信息:

有某种方式可以登录到经典的 syslog,也有某种方式可以登录到新的 systemd 日志。这些是不相容的;支持 syslog 的应用程序不能神奇地支持日志——作者必须明确实现这个功能。在 systemd 系统上运行时,支持 systemd 日志的应用程序通常被称为支持“原生 API”。

由于 syslog API 和 journald API 不同,不支持 journald API 的应用程序只会丢弃它们的日志消息。这就是你的情况。

syslog-ng包的工作是将系统日志 API 调用转换为日志 API 调用。通过这种方式,系统日志消息最终会进入日志。