【发布时间】:2016-04-15 23:10:06
【问题描述】:
在 docker 容器的日志中查找特定字符串的最佳方法是什么?假设我想查看所有请求,这些请求是在来自以“127”开头的 ip 的“nginx”docker 映像中发出的。
grep 在 docker logs 命令上无法正常工作:
docker logs nginx | grep "127."
打印所有日志,但不过滤结果!
【问题讨论】:
-
问题是:在 docker 容器的日志中查找特定字符串的最佳方法是什么
-
docker logs是否将输出发送到标准输出?因为如果确实如此,那么grep应该可以正常工作。如果不是,那么它有点坏了,您需要在使用grep过滤之前将标准错误重定向到标准输出。 -
检查stderr et atdout,从github.com/docker/docker/issues/7440
$ docker run -d --name foo busybox ls abcd $ docker logs foo > stdout.log 2>stderr.log $ cat stdout.log $ cat stderr.log ls: abcd: No such file or directory提取 -
@Robse 抱歉,在添加该示例之前,您的问题很难回答。看起来
docker logs很难 grep,因为它包含终端控制字符。我会通过 nginx 日志文件 grep。 -
想知道您是否可以使用 --follow 执行此操作,以便 grep 在容器初始化时不断循环