在Windows中的docker日志中搜索字符串

问题描述 投票:0回答:2

在 Linux 上我曾经触发这个命令

docker logs wp-mysql 2>&1 | grep "ready for connections"

但是,我希望在 Windows 上搜索该字符串

我尝试了以下两次尝试,但它不仅显示了搜索到的行,还显示了一些我不需要的额外行。

docker logs wp-mysql 2>&1 | findstr "ready for connections"

docker logs wp-mysql 2> >(findstr 'ready for connections')

您能否建议一个 grep 替代方案来在 Windows 上的 docker 日志中搜索字符串?

windows docker logging grep findstr
2个回答
1
投票

findstr如何工作

此命令搜索任何字符串“ready”、“for”或“connections”:

findstr "ready for connections"

此命令搜索字符串“准备连接”:

findstr /C:"ready for connections"

解决方案

这个命令应该可以解决您的问题:

docker logs wp-mysql 2>&1 | findstr /C:"ready for connections"

替代解决方案

或者这个,前提是本机 Windows 命令 find 是您路径中找到的第一个命令,默认安装位置是 C:\Windows\System32,但有些人更喜欢将路径放在 unix find 命令中在内置窗口find命令之前:

docker logs wp-mysql 2>&1 | find "ready for connections"

信息

使用选项/?展示如何使用 Windows 命令行实用程序。看看这两个命令的输出:

findstr /?
find /?

0
投票

让我举一个实际的使用示例。

这里是一个示例以及 Docker 日志。我正在运行一个容器 ID 以 42 开头的 Docker 容器。我想了解为什么 Docker 容器在启动时失败。它尝试连接到 Mongoose DB,但容器失败。我重定向输出并使用 select-string 来实现此目的。

首先我运行这个命令:

docker logs 42 2>&1 | select-string -pattern "Error" | select LineNumber,Line

这会为我提供 LineNumber 和 Line,这样我就可以看到输出中的何处有带有文本“Error”的模式。

LineNumber Line
---------- ----
         1 connection error: MongooseServerSelectionError: getaddrinfo ENOTFOUND mongodb
        31     compatibilityError: null,
        42 MongooseServerSelectionError: getaddrinfo ENOTFOUND mongodb
        66         error: Error: getaddrinfo ENOTFOUND mongodb
        68           name: 'MongoNetworkError'
        86     compatibilityError: null,

您可以在类似的流上使用它,例如 Powershell 中基于字符串的字符串和文件。

© www.soinside.com 2019 - 2024. All rights reserved.