容器化应用优先把日志写到 stdout 和 stderr,再由 Docker 日志驱动收集。这样 docker logs、监控代理和集中式日志平台都能使用同一入口。
docker logs --tail 100 <container>
docker logs --since 30m -f <container>如果应用只写容器内的 /var/log/app.log,Docker 默认看不到这些内容;文件还会随容器可写层增长。
日志必须有上限
长期运行的高流量服务如果不轮转日志,最终可能耗尽宿主机磁盘。可以在 Compose 中为服务设置限制:
services:
api:
image: example/api:1.0
logging:
driver: local
options:
max-size: "10m"
max-file: "3"也可以配置 Docker daemon 的默认日志驱动。修改后需要重启 Docker 才能使配置生效,而且只影响之后新建的容器;已有容器必须重建才会采用新的日志配置。
日志轮转只解决磁盘边界,不等于日志检索、告警或长期归档。生产环境还需要根据合规与排障周期决定保留策略。
不要直接用文本工具修改 Docker 管理的底层日志文件;应通过日志驱动、容器重建或受控清理处理。
参考:View container logs、Configure logging drivers、Local file logging driver