Якщо припустити, що у вас є кілька контейнерів, і ви хочете об'єднати журнали в один файл, вам потрібно використовувати такий агрегатор журналів, як 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
Другим кроком буде оновлення вільної конфіденційності для обслуговування журналів як для служби 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
і третім кроком буде запуск налаштованої мови, яка почне писати журнали до файлу.
Ось посилання для покрокових інструкцій
Біт довгий, але правильний спосіб, оскільки ви отримуєте більше контролю над файлом журналу файлів тощо, і він добре працює і в Docker Swarm.
tail -f `docker inspect --format='{{.LogPath}}' myapp`
- це дійсно JSON