時間範囲でログをフィルタリングする
全てのログや最新のログを表示するだけでなく、特定の時間範囲でコンテナログをフィルタリングすることも可能です。これは特定の期間に発生したイベントを調査する際に有用です。
docker logs
コマンドは時間ベースのログフィルタリングのために--since
と--until
オプションを提供しています。これらのオプションは RFC3339 タイムスタンプ、Unix タイムスタンプ、相対時間(例:10m
で 10 分、1h
で 1 時間)など様々な時間形式を受け付けます。
ログフィルタリングを試してみましょう。まず、異なる時間にいくつかのログを生成する必要があります。Nginx コンテナに再度curl
リクエストを送信することでこれを行えます。
新しいターミナルタブを開き、curl
コマンドを数回実行します(各実行の間に短い遅延を入れます)。
curl http://localhost:80
sleep 5
curl http://localhost:80
sleep 5
curl http://localhost:80
次に、my-nginx
コンテナのログをタイムスタンプ付きで表示し、これらのリクエストの時間を確認します。
docker logs -t my-nginx
curl
コマンドによって生成されたログエントリのタイムスタンプを確認してください。
特定の時間以降のログをフィルタリングするには--since
オプションを使用します。例えば、過去 1 分間に生成されたログを表示するには:
docker logs --since 1m my-nginx
このコマンドはmy-nginx
コンテナから過去 1 分間に生成された全てのログエントリを表示します。
--until
オプションを使用して特定の時間までのログをフィルタリングすることも可能です。例えば、1 分以上前に生成されたログを表示するには:
docker logs --until 1m my-nginx
このコマンドはmy-nginx
コンテナから 1 分以上前に生成された全てのログエントリを表示します。
--since
と--until
を組み合わせて特定の時間ウィンドウ内のログを表示できます。例えば、5 分前から 1 分前までのログを表示するには:
docker logs --since 5m --until 1m my-nginx
正確な出力はcurl
コマンドを実行したタイミングとdocker logs
コマンドを実行したタイミングによって異なることに注意してください。