关键是在docker守护进程配置syslog日志驱动并确保syslog服务就绪:全局修改/etc/docker/daemon.json设log-driver为"syslog",指定syslog-address(如unix:///dev/log或tcp://host:514)、facility和tag,重启docker;或单容器用--log-driver=syslog及--log-opt;同时确认rsyslog运行、/dev/log可用或远程端口开放。

要在 Docker 中将容器日志重定向到 Syslog,关键不是修改容器内进程的日志行为,而是配置 Docker 守护进程(daemon)使用 syslog 作为日志驱动,并确保宿主机的 Syslog 服务正常运行。
确认宿主机 Syslog 服务可用
Docker 的 syslog 日志驱动依赖于本地或远程 Syslog 服务。默认情况下,它会连接本地 unix:///dev/log(常见于 rsyslog 或 syslog-ng)。需确保:
- rsyslog 或 syslog-ng 正在运行(如执行
systemctl status rsyslog) -
/dev/log套接字存在且可写(多数现代 Linux 发行版默认支持) - 若需发往远程 Syslog,需启用 UDP/TCP 转发并开放对应端口
配置 Docker 使用 Syslog 日志驱动
有两种方式生效:
-
全局配置(推荐):编辑
/etc/docker/daemon.json,添加:
保存后重启 Docker:sudo systemctl restart docker
-
单容器指定:运行时用
--log-driver=syslog和--log-opt:
验证日志是否进入 Syslog
启动一个测试容器后,检查 Syslog 是否收到日志:
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
- 查看 rsyslog 默认日志文件(通常为
/var/log/syslog或/var/log/messages) - 使用
journalctl -u rsyslog -f实时跟踪 - 过滤关键词,例如:
grep "myapp" /var/log/syslog
注意:Docker 默认以 docker 标识发送日志,可通过 syslog-tag 或 tag 选项自定义标识符,便于 Syslog 规则匹配和归类。
可选:定制 Syslog 处理规则
为更好管理 Docker 日志,可在 rsyslog 配置中单独归档:
- 新建
/etc/rsyslog.d/99-docker.conf:
重启 rsyslog 生效:sudo systemctl restart rsyslog
这样所有 Docker 容器日志(经 syslog 驱动发送的)都会集中存入 /var/log/docker.log,避免污染系统日志。










