Birden fazla taşıyıcınız olduğunu ve günlükleri tek bir dosyada toplamak istediğinizi varsayarsak fluentd gibi bazı günlük toplayıcılar kullanmanız gerekir. fluentd, docker kapsayıcıları için günlük sürücüsü olarak desteklenir.
Docker-compose'da günlük kaydı sürücüsünü tanımlamanız gerekir.
service1:
image: webapp:0.0.1
logging:
driver: "fluentd"
options:
tag: service1
service2:
image: myapp:0.0.1
logging:
driver: "fluentd"
options:
tag: service2
İkinci adım, fluentd conf'i hem hizmet 1 hem de hizmet 2 için günlükleri karşılayacak şekilde güncellemektir.
<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>
Bu yapılandırmada, günlüklerin bu yola tek bir dosyaya yazılmasını istiyoruz
/fluentd/log/service/service.*.log
ve üçüncü adım, günlükleri dosyaya yazmaya başlayacak özelleştirilmiş fluentd'yi çalıştırmak olacaktır.
İşte adım adım talimatların bağlantısı
Bit Uzun, ancak günlük dosyaları yolu vb. Üzerinde daha fazla kontrol sahibi olduğunuz için doğru yoldur ve Docker Swarm'da da iyi çalışır.
tail -f `docker inspect --format='{{.LogPath}}' myapp`
- bu gerçekten JSON