Предполагая, что у вас есть несколько контейнеров и вы хотите объединить журналы в один файл, вам нужно использовать какой-нибудь агрегатор журналов, например fluentd. fluentd поддерживается как драйвер журналирования для контейнеров докеров.
Итак, в docker-compose вам нужно определить драйвер ведения журнала
service1:
image: webapp:0.0.1
logging:
driver: "fluentd"
options:
tag: service1
service2:
image: myapp:0.0.1
logging:
driver: "fluentd"
options:
tag: service2
Вторым шагом будет обновление fluentd conf для обслуживания журналов как для службы 1, так и для службы 2.
<match service1>
@type copy
<store>
@type file
path /fluentd/log/service/service.*.log
time_slice_format %Y%m%d
time_slice_wait 10m
time_format %Y%m%dT%H%M%S%z
</store>
</match>
<match service2>
@type copy
<store>
@type file
path /fluentd/log/service/service.*.log
time_slice_format %Y%m%d
time_slice_wait 10m
time_format %Y%m%dT%H%M%S%
</store>
</match>
В этой конфигурации мы просим, чтобы журналы записывались в один файл по этому пути.
/fluentd/log/service/service.*.log
и третьим шагом будет запуск настроенного fluentd, который начнет записывать журналы в файл.
Вот ссылка для пошаговых инструкций
Немного длинный, но правильный способ, поскольку вы получаете больший контроль над путем к файлам журналов и т. Д., И он также хорошо работает в Docker Swarm.
tail -f `docker inspect --format='{{.LogPath}}' myapp`
- это действительно JSON