如何同时Tail和Grep Docker日志?命令未过滤内容的问题
解决Docker日志Tail+Grep无效问题
当你执行sudo docker logs -f my_container | grep foo时,所有日志都显示而未被过滤,核心原因是Docker容器的日志会同时输出到标准输出(stdout)和标准错误(stderr),而默认情况下grep只处理标准输出的内容,标准错误的日志会直接绕过grep显示在终端。
解决方法很简单,把标准错误重定向到标准输出,让grep能处理所有日志流:
sudo docker logs -f my_container 2>&1 | grep foo
补充说明:
2>&1是Shell重定向语法:2代表标准错误,1代表标准输出,&表示引用文件描述符而非文件名,整句意思是把标准错误的内容合并到标准输出中。- 如果需要忽略大小写匹配,可以加上
-i参数:sudo docker logs -f my_container 2>&1 | grep -i foo - 若要显示匹配行的前后上下文,可使用
-A(后几行)、-B(前几行)参数,比如grep -A 2 -B 2 foo
内容的提问来源于stack exchange,提问作者user2233706
相关产品推荐
相关产品推荐

