如何从日志中的当前位置拖尾Docker日志而不看到整个文件或等待它遍历整个文件

Sus*_*san 5 logging docker

如果在Linux中使用coreutils tail命令,则具有-f选项,该选项可让您从日志的当前位置开始跟踪日志文件(它不会移至文件的开头并显示所有内容)。

Docker日志中是否可以使用此功能,而不必等待它遍历整个日志?

也许我正在为选项尝试错误的论点?使用我尝试过的可用文档

docker logs --since 1m somecontainer
Run Code Online (Sandbox Code Playgroud)

docker logs -f --since 1m somecontainer
Run Code Online (Sandbox Code Playgroud)

看来它实际上遍历了整个日志文件(这可能需要很长时间),然后在到达指定的时间范围后开始回显到屏幕。

有没有一种方法可以仅从当前点开始拖尾而无需等待?我最好的选择是始终注销到某个外部文件,然后仅使用coreutils tail命令添加该文件吗?

Lig*_*t.G 31

我不知道为什么不docker logs --help寻求帮助?从最后10行开始,尝试以下操作。更多细节在这里

docker logs -f --tail 10 container_name
Run Code Online (Sandbox Code Playgroud)


rc.*_*ari 15

或者,我们可以按时间(例如,自过去 2 分钟以来)检查日志,如下所示:

docker logs --since=2m <container_id> // since last 2 minutes
docker logs --since=1h <container_id> // since last 1 hour
Run Code Online (Sandbox Code Playgroud)

  • OP 在他们的答案中将此作为非选项发布:“看来它实际上遍历了整个日志文件(这可能需要很长时间),然后一旦达到您指定的时间范围,就开始回显到屏幕。” (3认同)

Mat*_*man 12

我认为你做得正确,并且当我尝试时它似乎按预期工作。您是否使用一些非默认日志驱动程序等?

要仅跟踪新日志文件,您可以使用-f --since 0m.

  • 我也按照您的建议尝试使用“-f --since 0m”。在返回输出之前,它仍然花了 2 分钟遍历完整的日志文件。这并不可怕,但确实增加了调试时间。 (2认同)

Dro*_*ror 10

使用 --tail开关:

>  docker logs -f <container name> --tail 10
Run Code Online (Sandbox Code Playgroud)

这将显示从最后 10 行开始的日志