Suponiendo que tiene varios contenedores y desea agregar los registros en un solo archivo, debe usar algún agregador de registros como fluentd. fluentd se admite como controlador de registro para contenedores Docker.
Entonces, en docker-compose, debe definir el controlador de registro
service1:
image: webapp:0.0.1
logging:
driver: "fluentd"
options:
tag: service1
service2:
image: myapp:0.0.1
logging:
driver: "fluentd"
options:
tag: service2
El segundo paso sería actualizar la configuración de fluentd para atender los registros tanto del servicio 1 como del servicio 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>
En esta configuración, pedimos que los registros se escriban en un solo archivo en esta ruta
/fluentd/log/service/service.*.log
y el tercer paso sería ejecutar el fluentd personalizado que comenzará a escribir los registros en el archivo.
Aquí está el enlace para instrucciones paso a paso
Bit Long, pero de manera correcta, ya que obtiene más control sobre la ruta de los archivos de registro, etc. y también funciona bien en Docker Swarm.
tail -f `docker inspect --format='{{.LogPath}}' myapp`
- realmente es JSON