我花了很多时间来解决这个问题,但没有成功。我是Linux应用程序管理和日志记录的新手。
问题:
使用systemd启动syslog-ng时无法将数据记录到/ var / log / messages。但是当从shell启动syslog-ng时,它会很好地记录到/ var / log / messages。我正在使用logger实用程序来测试它。
经过一些研究,我想我可能已经找到了问题,但不知道如何修复它。
当systemd启动进程时,syslog-ng从/ run / systemd / journal / syslog socket而不是/ dev / log /读取,而logger实用程序将消息写入/ dev / log。我在syslog-ng.conf文件中更改了以下条目。
source src {
system();
internal();
};
到
source src {
unix-dgram("/dev/log");
internal();
};
另外,我在journald.conf中设置了以下行并重新启动它。
ForwardToSyslog=yes
这是使用systemd
启动的进程的lsof输出syslog-ng 23425 root 3u unix 0xffff881fce1f1e00 0t0 9281890 /run/systemd/journal/syslog
并在shell上手动启动进程
syslog-ng 19482 root 6u unix 0xffff881fcdd5c380 0t0 10168394 /dev/log