Фильтрация логов по временному диапазону
Помимо просмотра всех логов или только последних записей, вы также можете фильтровать логи контейнера по определённому временному диапазону. Это полезно при расследовании событий, произошедших в конкретный период времени.
Команда docker logs предоставляет опции --since и --until для фильтрации логов по времени. Эти опции принимают различные форматы времени, включая метки времени RFC3339, Unix-время или относительные значения (например, 10m для 10 минут, 1h для 1 часа).
Давайте попробуем отфильтровать логи. Сначала нам нужно сгенерировать логи в разное время. Мы можем сделать это, отправив несколько запросов curl к контейнеру Nginx.
Откройте новую вкладку терминала и выполните команду 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, сгенерированные за последнюю минуту.
Вы также можете фильтровать логи до определённого времени с помощью опции --until. Например, чтобы просмотреть логи, сгенерированные более 1 минуты назад:
docker logs --until 1m my-nginx
Эта команда покажет все записи логов контейнера my-nginx, сгенерированные более одной минуты назад.
Вы можете комбинировать --since и --until для просмотра логов в конкретном временном окне. Например, чтобы просмотреть логи между 5 минутами назад и 1 минутой назад:
docker logs --since 5m --until 1m my-nginx
Помните, что точный вывод будет зависеть от времени выполнения команд curl и времени запуска команд docker logs.