시간 범위로 로그 필터링
모든 로그 또는 가장 최근 로그를 보는 것 외에도 특정 시간 범위를 기준으로 컨테이너 로그를 필터링할 수도 있습니다. 이는 특정 기간 동안 발생한 이벤트를 조사할 때 유용합니다.
docker logs 명령은 시간을 기준으로 로그를 필터링하기 위해 --since 및 --until 옵션을 제공합니다. 이러한 옵션은 RFC3339 타임스탬프, Unix 타임스탬프 또는 상대 시간 (예: 10 분은 10m, 1 시간은 1h) 을 포함한 다양한 시간 형식을 허용합니다.
로그 필터링을 시도해 보겠습니다. 먼저, 서로 다른 시간에 몇 개의 로그를 생성해야 합니다. 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
이 명령은 지난 1 분 이내에 생성된 my-nginx 컨테이너의 모든 로그 항목을 표시합니다.
--until 옵션을 사용하여 특정 시간까지의 로그를 필터링할 수도 있습니다. 예를 들어, 1 분 전에 생성된 로그를 보려면 다음과 같이 합니다.
docker logs --until 1m my-nginx
이 명령은 1 분 이상 전에 생성된 my-nginx 컨테이너의 모든 로그 항목을 표시합니다.
--since 및 --until을 결합하여 특정 시간 창 내의 로그를 볼 수 있습니다. 예를 들어, 5 분 전과 1 분 전 사이의 로그를 보려면 다음과 같이 합니다.
docker logs --since 5m --until 1m my-nginx
정확한 출력은 curl 명령을 실행한 시점과 docker logs 명령을 실행한 시점에 따라 달라집니다.