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


18

logger命令通过syslog记录一个条目,该条目通常将该行放入诸如之类的文件中/var/log/messages

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

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

Answers:


15

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

pacman -S syslog-ng

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

systemctl enable syslog-ng

最后,由于启用服务不会自动启动服务,因此请启动服务:

systemctl start syslog-ng

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

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

有某种方法可以登录到经典syslog,也有某种方法可以登录到新的systemd日志。这些是不兼容的;支持syslog的应用程序不能神奇地制作来支持日志-作者必须明确实现此功能。当在系统化系统上运行时,支持系统化日志的应用程序通常称为支持“本机API”。

由于syslog API和日记日志API不同,因此不支持日记日志API的应用程序将删除其日志消息。这就是您的情况。

syslog-ng包的工作是把系统日志API调用到journald API调用。这样,系统日志消息最终会进入日志。


syslog-ng已安装但未启用,我认为已记录日志已完全替换了它。是logger唯一能够倾诉的syslog?那么登录日志的正确方法是什么?
2014年

@michas我已经添加了一个部分,希望可以澄清这一点
2014年

“ [..]将syslog API调用转换为日记API调用”-据我所知,转换仅以另一种方式起作用:我在/ var / log /中找到所有消息,但在journalctl中仅找到日记消息。
2014年

我不确定@michas可能是日志记录的内容。syslog-ng将发送到syslog的消息转发到日记。
凌晨

1
logger foobar;journalctl|grep foobar您的系统上是否列出条目?
michas

0

一些守护程序未/var/log/在Arch Linux中写入日志,并且其配置与syslog-ng我看到的其他答案不同。

普通syslog-ng.service服务不存在,实际上是被命名的syslog-ng@default.service

这行不通:

# systemctl enable syslog-ng
Failed to enable unit: Unit file syslog-ng.service does not exist.

对于Arch Wiki,我必须做些不同:

# systemctl start syslog-ng@default.service
# systemctl enable syslog-ng@default.service
Created symlink /etc/systemd/system/multi-user.target.wants/syslog-ng@default.service → /usr/lib/systemd/system/syslog-ng@.service.
#
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.