docker-compose logs -f 是实时追踪所有服务聚合日志的最常用方法,支持按服务筛选、时间范围回溯、导出过滤及日志轮转优化。

直接用 docker-compose logs -f 就能实时追踪所有服务的聚合日志,这是最常用也最有效的起点。它把多个容器的标准输出和错误流自动合并、按时间排序,避免你一个个进容器查日志。
查看全部服务的实时日志
启动服务后,执行以下命令即可持续输出所有容器的新日志:
-
docker-compose logs -f:默认滚动显示全部服务最新日志 -
docker-compose logs -f --tail=50:只加载最近 50 行,再持续追加新内容 -
docker-compose logs -f -t:加上时间戳,便于分析时序问题
聚焦单个或多个指定服务
当系统服务较多,全量日志干扰大时,可精准筛选:
-
docker-compose logs -f web:只跟踪名为 web 的服务 -
docker-compose logs -f api db:同时盯住 api 和 db 两个服务(空格分隔) -
docker-compose logs -f --no-log-prefix web:去掉容器名前缀,让日志更干净
过滤历史日志与输出控制
排查已发生的问题,常需回溯特定时段或保存日志做分析:
-
docker-compose logs --since="1h" web:查过去一小时内 web 的日志 -
docker-compose logs --until="2026-06-17T22:00:00" db:查截止到某时刻的数据库日志 -
docker-compose logs --no-color web > web.log:导出无颜色纯文本,方便后续 grep 或上传分析
生产环境日志行为优化
默认 json-file 驱动会持续写入本地磁盘,长期运行可能撑爆空间。建议在 docker-compose.yml 中配置轮转:
- 添加
logging区块,限制单文件大小和保留份数 - 例如:
max-size: "10m"+max-file: "3",即每个服务最多存 30MB 日志 - 若不需要持久化,可设
driver: "none"(仅限调试或资源敏感场景)











