日志
运行日志直接来自应用容器;构建日志随每次部署保存。两者都不是日志归档。
控制面板中的运行日志
应用的 Logs 选项卡会实时传输容器写入标准输出和标准错误的内容。打开时显示最近 100 行,并持续跟随新输出;查看器最多保留最近 1,000 行。
- Search logs 和 Filter logs... 可筛选显示的行,并显示匹配数量。
- Pause 冻结显示,新行会继续进入缓冲区;Resume 将其重新显示。
- Toggle timestamps 显示或隐藏 Docker 为每一行记录的时间。
- Copy logs 和 Download logs 获取查看器中当前的行(一个
.txt文件);Clear logs 只清空查看器。 - 对于由多个服务组成的应用,可通过选择器选择要读取的容器;默认是 Primary container。
日志流是位于 /api/v1/apps/<id>/logs 的 WebSocket,可选参数为 tail(最多 10,000 行)、follow 和 service;普通 HTTP 请求会被拒绝。
通过命令行
sh0 logs <app> 输出最近 50 行后退出;--tail N 可修改行数(真实输出):
$ sh0 logs my-api --tail 3
[*] Connecting to logs for my-api...
2026-10-02T03:07:16.015Z GET /
2026-10-02T03:07:16.070Z GET /health
2026-10-02T03:07:16.123Z GET /api/items-f / --follow 保持连接并持续输出新行,直到按下 Ctrl+C。
构建日志
每次部署都保留自己的构建与部署日志:可在应用的 Deployments 选项卡中打开。sh0 push 和 sh0 deploy --wait 会显示其发起的部署的进度。构建日志随部署记录保存在 sh0 的数据库中,不会自动清理。
保留哪些内容、保留多久
sh0 不保存运行日志的副本。它们存放在该容器的 Docker 日志文件中,并受 sh0 在创建容器时设置的限制约束:
| 日志 | 保留方式 |
|---|---|
| 容器的运行输出 | Docker json-file 驱动,每 10 MB 轮转,保留 3 个文件:每个容器约 30 MB 上限,最旧的行最先丢弃 |
| 重新部署之后 | 旧容器被删除,其日志也随之消失:查看器从新容器重新开始 |
| 构建与部署日志 | 与部署记录一起保存,直到应用被删除 |
| 定时任务运行记录 | 见 定时任务:运行历史按任务清理 |
$ docker inspect <container> --format '{{json .HostConfig.LogConfig}}'
{"Type":"json-file","Config":{"max-file":"3","max-size":"10m"}} Note
10 MB × 3 的限制适用于 sh0 以此设置创建的容器;由旧版本创建的容器在重新创建之前保留其创建时的限制。可如上用
docker inspect 检查(真实输出)。更长时间保留日志
sh0 v1.10.2 没有日志导出、保留期设置,也不能将日志转发到外部服务。如需超出轮转窗口或跨部署的历史记录,请让应用把日志发送到外部服务(日志 SaaS、syslog 服务器或您自己的收集器),或在主机上运行读取 Docker 日志文件的收集器。