docker logs 默认不显示时间戳,需用 --timestamps(-t)选项启用,显示 RFC3339 格式 UTC 时间戳;可与 -f、--since、-n 等组合使用;时间戳源于日志驱动写入时刻,非应用打印时刻,精度取决于驱动与系统,永久生效需依赖驱动配置而非 --log-opt。

使用 docker logs 命令时,默认不显示时间戳。要为容器日志添加时间戳,需通过 --timestamps(或简写 -t)选项启用。
启用日志时间戳显示
在查看日志时加上 -t 参数,Docker 会在每行日志前自动添加 RFC3339 格式的时间戳(如 2024-05-20T14:22:36.123456789Z):
docker logs -t <container-id-or-name>docker logs --timestamps nginx-container
结合其他常用选项一起使用
时间戳常与滚动、实时跟踪等参数配合,提升可读性和实用性:
-
-f:持续输出新日志(类似tail -f),加-t后每条新日志都带时间戳 -
--since/--until:按时间范围过滤日志,例如docker logs -t --since="2h" app -
-n:限制输出行数,如docker logs -t -n 50 app显示最近 50 行并带时间戳
注意时间戳的来源和精度
Docker 日志时间戳反映的是日志被写入容器日志驱动(如 json-file)的时刻,不是应用内部打印日志的时刻:
- 若应用自身已输出时间戳(如 Spring Boot 默认格式),再加
-t会导致重复,可权衡是否启用 - 纳秒级精度仅在底层日志驱动支持且系统时钟稳定时体现,实际显示可能截断到微秒或毫秒
- 时间统一为 UTC,不随宿主机本地时区变化
永久为容器配置日志时间戳(启动时)
如果希望容器从启动起所有日志都默认带时间戳,可在 docker run 中设置日志驱动选项:
-
docker run --log-opt mode=non-blocking --log-opt max-buffer-size=4m -t nginx不影响时间戳,但--log-driver=json-file是默认驱动,本身不控制时间戳显示 - 真正决定是否记录时间戳的是日志驱动行为;
json-file驱动始终记录时间戳字段,docker logs -t只是将其展示出来 - 若用
syslog或journald等驱动,时间戳由对应后端系统生成和格式化,-t可能无效


















