2016-01-11 6 views
11

ドッカーコンテナのログで特定の文字列を見つける最良の方法は何ですか?私が "127"で始まるipから来た "nginx"ドッカーの画像で行われたすべてのリクエストを見たいとしましょう。コンテナのドッカーログでの文字列の検索

ドッカログコマンドで期待どおりにgrepを文句を言わない仕事:

docker logs nginx | grep "127." 

プリントすべてのログが、結果をフィルタリングしていません!

+0

質問がある:ドッキングウィンドウのログに特定の文字列を検索するための最良の方法は何ですかコンテナ – Robse

+0

'docker logs'は出力を標準出力に送りますか?なぜなら 'grep'はうまくいくからです。もしそうでなければ、それは少し破られ、 'grep'でフィルタリングする前に、標準エラーに標準エラーをリダイレクトする必要があります。 –

+1

check stderr et atdout、https://github.com/docker/docker/issues/7440から抽出する$ドッカーrun -d --name fooビジビボックスls abcd $ドッカーログfoo> stdout.log 2> stderr.log $ cat stdout.log $ cat stderr.log ls:abcd:そのようなファイルやディレクトリがありません。 ' – user2915097

答えて

2

コメントをフォローアップし、この問題を抱える他の人のためにこれを明確にする。ここでは、nginxのコンテナログを検索するための最も簡単な方法を示します。

docker logs nginx > stdout.log 2>stderr.log 
cat stdout.log | grep "127." 

IMOは、これらの潜在的に非常に大きなファイルを作成して削除する必要があるためです。うまくいけば、我々はそれを少し便利にするためにいくつかのツールを得るでしょう。

26

コンテナはstderrにログインしている場合、これは、発生する可能性が配管が唯一の標準出力のために働くので、試してみてください。

docker logs nginx 2>&1 | grep "127."