了解 Docker 日志

Jua*_*njo 2 logging grep docker

我们都知道,我们可以在日志文件中搜索字符串并显示搜索字符串的周围行:
grep -AXX -BXX "searched" file.log

是否可以使用 docker log 命令执行相同的操作?
我想要做的是,如果已经知道我正在搜索的字符串发生在大约一小时前,则使用“since”与“after”和“before”,仅获取结果而不是所有日志,例如如下所示:
docker log --since=65m -A20 -B5“搜索字符串”[ID]

现在我将所有内容复制到一个文件中,有时会产生一个大文件,并使用 grep:
docker logs --since=65m [ID] >> file.log
grep -AXX -BXX "searched" file.log

Mic*_*yna 5

根据文档,你不能。但是,您可以使用管道 grep

docker logs | grep "whatever"
Run Code Online (Sandbox Code Playgroud)

grep 的 stackoverflow 答案

有关日志的 docker 文档

发展替代方案

然而,出于开发目的,我使用datalust/seq - 只需将图像添加到您的 docker-compose 文件中,并使用小配置(取决于您使用的语言)将日志重定向到漂亮的可搜索门户。

docker logs | grep "whatever"
Run Code Online (Sandbox Code Playgroud)

门户(在http://localhost:8082我将默认80端口从容器重定向到我的8082端口时): 序列图像

生产替代方案

出于生产目的,我建议使用能够自动收集日志的东西,stdout例如stderr

为您的应用程序提供有关日志记录和监控的最高标准。