Нет необходимости перенаправлять логи.
Docker по умолчанию хранит журналы в одном файле журнала. Чтобы проверить путь к файлу журнала, выполните команду:
docker inspect --format='{{.LogPath}}' containername
/var/lib/docker/containers/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334-json.log
Откройте этот файл журнала и проанализируйте.
если вы перенаправляете журналы, вы будете получать журналы только до перенаправления. вы не сможете видеть живые журналы.
РЕДАКТИРОВАТЬ:
Чтобы просмотреть живые журналы, вы можете запустить команду ниже
tail -f `docker inspect --format='{{.LogPath}}' containername`
Примечание:
Этот файл журнала /var/lib/docker/containers/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334-json.log
будет создан только в том случае, если докер генерирует журналы, если журналов нет, тогда этого файла там не будет. это похоже на то, что когда-нибудь мы запускаем команду, docker logs containername
и она ничего не возвращает. В этом случае этот файл будет недоступен.
tail -f `docker inspect --format='{{.LogPath}}' myapp`
- это действительно JSONКак насчет этого варианта:
docker logs containername >& logs/myFile.log
Он не будет перенаправлять журналы, запрошенные в вопросе, а копирует их один раз в определенный файл.
источник
docker logs --help
чтобы быть увереннымdocker logs -f <yourContainer> &> your.log &
Пояснение:
-f
(т.е.--follow
): записывает все существующие журналы и продолжает ( следует ) записывать все, что будет дальше.&>
перенаправляет как стандартный вывод, так и стандартную ошибку.&
.> output.log 2> error.log
(вместо использования&>
).источник
Чтобы записать как stdout, так и stderr из контейнера докеров в один файл журнала, выполните следующее:
источник
Предполагая, что у вас есть несколько контейнеров и вы хотите объединить журналы в один файл, вам нужно использовать какой-нибудь агрегатор журналов, например fluentd. fluentd поддерживается как драйвер журналирования для контейнеров докеров.
Итак, в docker-compose вам нужно определить драйвер ведения журнала
Вторым шагом будет обновление fluentd conf для обслуживания журналов как для службы 1, так и для службы 2.
В этой конфигурации мы просим, чтобы журналы записывались в один файл по этому пути.
/fluentd/log/service/service.*.log
и третьим шагом будет запуск настроенного fluentd, который начнет записывать журналы в файл.
Вот ссылка для пошаговых инструкций
Немного длинный, но правильный способ, поскольку вы получаете больший контроль над путем к файлам журналов и т. Д., И он также хорошо работает в Docker Swarm.
источник
Поскольку Docker объединяет для нас stdout и stderr, мы можем обрабатывать вывод журнала как любой другой поток оболочки. Чтобы перенаправить текущие журналы в файл, используйте оператор перенаправления
$ docker logs test_container > output.log
docker logs -f test_container > output.log
Вместо отправки вывода в stderr и stdout перенаправьте вывод вашего приложения в файл и сопоставьте файл с постоянным хранилищем вне контейнера.
$ docker logs test_container> /tmp/output.log
Docker не принимает относительные пути в командной строке, поэтому, если вы хотите использовать другой каталог, вам нужно будет использовать полный путь.
источник
Если вы работаете в Windows и используете PowerShell (как я), вы можете использовать следующую строку для записи
stdout
иstderr
:Надеюсь, это кому-то поможет!
источник
foreach ($element in $(docker ps -a --format "{{.Names}}")) {docker logs $element | Out-File "C:/dockerlogs/$element.log"}
Самый простой способ, который я использую, - это команда в терминале:
структура:
источник
Сначала проверьте свой идентификатор контейнера
Вы можете увидеть первую строку в столбцах CONTAINER ID. Вероятно, это выглядит как "3fd0bfce2806", затем введите его в оболочке
Вы увидите что-то вроде этого
тогда вы можете увидеть это как
Это будет в формате JSON, вы можете использовать метку времени для отслеживания ошибок
источник
Bash-скрипт для копирования всех журналов контейнера в указанный каталог:
источник