Фильтрация логов по временному диапазону
Помимо просмотра всех логов или только последних записей, вы также можете фильтровать логи контейнера по определённому временному диапазону. Это полезно при расследовании событий, произошедших в конкретный период времени.
Команда 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
.