use*_*574 6 systemd systemd-journald
我试图弄清楚两者的关系,
/run/systemd/journal/dev-log
/run/systemd/journal/syslog
Run Code Online (Sandbox Code Playgroud)
我找不到足够清晰的文档。从某种意义上说,它们是否基本相同?因为当我在 syslog-ng 的“unix-dgram()”中包含任何一个时,我几乎得到相同的输出。有什么区别吗?无论如何,这两者之间是什么关系?
感谢您的澄清。
当你知道如何时,这很容易:)
$ systemctl list-sockets
LISTEN UNIT ACTIVATES
...
/run/systemd/journal/dev-log systemd-journald-dev-log.socket systemd-journald.service
/run/systemd/journal/socket systemd-journald.socket systemd-journald.service
/run/systemd/journal/stdout systemd-journald.socket systemd-journald.service
...
25 sockets listed.
Pass --all to see loaded but inactive sockets, too.
Run Code Online (Sandbox Code Playgroud)
好吧,我撒谎说它很容易。我没有 syslog 守护进程,这意味着我没有激活 syslog.socket。但这就是我找到文档的地方:
$ systemctl cat syslog.socket
# /usr/lib/systemd/system/syslog.socket
...
Documentation=man:systemd.special(7)
Documentation=http://www.freedesktop.org/wiki/Software/systemd/syslog
...
# The default syslog implementation should make syslog.service a
# symlink to itself, so that this socket activates the right actual
# syslog service.
#
# Examples:
#
# /etc/systemd/system/syslog.service -> /lib/systemd/system/rsyslog.service
# /etc/systemd/system/syslog.service -> /lib/systemd/system/syslog-ng.service
#
# Best way to achieve that is by adding this to your unit file
# (i.e. to rsyslog.service or syslog-ng.service):
#
# [Install]
# Alias=syslog.service
#
# See http://www.freedesktop.org/wiki/Software/systemd/syslog for details.
Run Code Online (Sandbox Code Playgroud)
https://www.freedesktop.org/wiki/Software/systemd/syslog/说:
请注意,现在监听 /dev/log 的是日志,不再直接是 BSD syslog 守护进程。如果您的日志守护进程想要访问所有日志数据,那么它应该监听 /run/systemd/journal/syslog 而不是通过 systemd 附带的 syslog.socket 单元文件。在 systemd 系统上,直接侦听 /dev/log 不再可行,并且您的守护进程可能无法自行绑定到 /run/systemd/journal/syslog 套接字。如果您这样做,那么您将丢失来自服务(以及其他内容)的 STDOUT/STDERR 的日志记录。
因此,您的问题的答案是,您不应该将这些路径中的任何一个与unix-dgram(). 如果您想在其下作为 syslog 守护程序运行,您确实需要特定的 systemd 支持。
对于单个配置,听起来您可能会绑定到/run/systemd/journal/syslog. 这绝对是最不邪恶的选择,因为 a) 它避免与 journald 争夺谁拥有/dev/log,b) journald 将从服务的 STDOUT/STDERR 向它写入消息,这些消息永远不会写入/dev/log. 鉴于它似乎有效,我看不到文档中列出的任何明显缺点。明显的缺点是“我们不再建议人们在syslog.target......早期启动消息完全丢失到您的实施之后订购他们的单元。” 还有一个警告说“许多服务将无法登录到您的 syslog 实现”,但我认为这是不正确的/只有在您收听/dev/log.
| 归档时间: |
|
| 查看次数: |
8697 次 |
| 最近记录: |