直接启用 journald 的 ForwardToSyslog=yes 并重启服务,即可将日志转发至本地 rsyslog;需确保 rsyslog 已安装启用、syslog.socket 活跃、imuxsock 模块未禁用,并通过 tail -f /var/log/syslog 或 journalctl 验证。

直接让 journald 把日志发给本地 rsyslog(或其它 syslog 实现),只需启用转发并重启服务,无需额外代理或网络配置。
确认 syslog 服务已就绪
确保系统已安装并运行 rsyslog(最常见)或 syslog-ng:
- Ubuntu/Debian:
sudo apt install -y rsyslog && sudo systemctl enable --now rsyslog - CentOS/RHEL:
sudo yum install -y rsyslog && sudo systemctl enable --now rsyslog - 检查状态:
systemctl is-active rsyslog应返回 active
开启 journald 的 syslog 转发
编辑 /etc/systemd/journald.conf,修改或取消注释以下行:
-
ForwardToSyslog=yes(关键开关,启用转发) -
MaxLevelSyslog=info(可选,控制转发级别,默认 info 及以上) -
ForwardToConsole=no和ForwardToWall=no(建议关闭,避免干扰)
保存后执行:sudo systemctl restart systemd-journald
验证日志是否进入 syslog
转发生效后,日志会出现在 rsyslog 默认路径(如 /var/log/messages 或 /var/log/syslog)中:
- 实时查看:
sudo tail -f /var/log/syslog(Debian/Ubuntu)或sudo tail -f /var/log/messages(RHEL/CentOS) - 用
journalctl对比源日志:journalctl -n 10 -o short-precise - 检查 rsyslog 是否收到数据:
sudo journalctl -u rsyslog -n 20查看其自身运行日志
注意点与常见问题
该方式依赖 syslog.socket 激活机制,但大多数现代发行版已默认启用。若日志未出现,可检查:
-
systemctl status syslog.socket是否 active(rsyslog 通常通过此 socket 接收 journald 输出) -
ls -l /run/systemd/journal/syslog应存在该 socket 文件 - rsyslog 配置中未禁用
imuxsock模块(默认启用,负责接收来自 journald 的本地日志)


















