docker compose logs 是什么
compose logs 把项目内多个服务的日志聚合在一起,按容器名前缀区分,一条命令就能同时看到整栈的启动过程。相比逐个 docker logs,它在排查「谁先挂、谁连不上谁」这类问题时效率高得多:可以在同一个时间线上比对两个服务的报错,快速定位因果。
基本信息
| 多服务 | docker compose logs web db,不写服务名则输出全部服务 |
|---|---|
| -f 参数 | 持续跟踪输出,类似 tail -f |
| --tail N | 每个容器只显示最后 N 行 |
| --since 与 --until | 按时间过滤,如 --since 10m 只看最近十分钟 |
| -t 参数 | 输出带时间戳,便于与其他系统日志对齐 |
典型使用场景
- 启动失败排查:一次看清数据库、缓存与应用的先后报错顺序
- 发布后验证:确认新版本服务已正常监听且无异常栈
- 复现问题:用 --since 精确截取故障时段日志并保存归档
- 性能排查:观察请求耗时日志,判断瓶颈在应用还是依赖
- 交付交付物:导出日志文件交给同事或厂商做进一步分析
使用示例
使用示例
docker compose logs --tail 100 # 每个服务各看最后 100 行
docker compose logs -f --since 10m web # 只看 web 最近十分钟并持续跟踪
docker compose logs -t web db # 带时间戳,便于与依赖日志对齐
docker compose logs --no-color web db > compose.log # 导出为文件便于分享
docker compose ps # 日志没输出时先确认容器状态常用参数对照
| 参数 | 作用 | 典型用法 |
|---|---|---|
| (无参数) | 输出全部服务的历史日志 | 快速通览整栈情况 |
| -f | 持续跟踪新日志 | 实时观察启动过程 |
| --tail N | 限制每个容器行数 | 避免刷屏,只看尾部 |
| --since | 按时间起点过滤 | 截取故障时间段 |
| -t | 显示时间戳 | 跨服务对时序 |
| --no-color | 关闭颜色输出 | 写入文件便于阅读 |
日志总量取决于日志驱动与 max-size 配置:json-file 驱动若不限制,日志文件会随运行时间不断增长,最终撑满磁盘,建议在守护进程或服务级别设置轮转上限。
logs -f 长时间没有输出并不代表服务没起来,可能是应用本身安静无日志。此时结合 compose ps 看容器状态、再用健康检查或端口探测确认更可靠。