Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Durante o processo de deploy usando Docker Compose, é comum que os logs sejam exibidos apenas no terminal, dificultando análises posteriores. Uma dúvida frequente é como redirecionar esses logs para um arquivo de forma prática.
docker-compose up -d --build, os logs aparecem na saída padrão, mas se quisermos guardá-los para revisões futuras, precisamos de uma solução.
docker-compose up -d --build > logs.txt 2>&1 captura o stdout e stderr, mas o problema é que o comando roda em background e, por padrão, o arquivo não é atualizado após o terminal fechar.docker logs: Após o container estar rodando, podemos usar docker logs -f <container_id> e redirecionar ao arquivo, mas isso exige que o container esteja iniciado.docker-compose.yml, usando, por exemplo, o driver json-file (padrão), que armazena os logs em arquivos no host.docker logsdocker-compose up -d --build
for container in $(docker ps -q). do
name=$(docker inspect --format='{{.Name}}' $container | sed 's/^\///')
docker logs -f $container > ${name}_logs.txt &
done
Assim, você consegue um arquivo de logs separado por container.
Vamos trocar experiências?
---
Concordo, o
docker logsé prático, mas dependendo do volume, pode ficar complicado. Aqui, a gente usa o ELK pra centralizar e fazer buscas rápidas. E vocês, tem preferência por alguma ferramenta?Eu geralmente uso o
docker logsapós o deploy, mas achei interessante essa ideia de automatizar com script. Já tentou usar algum serviço de centralização? Pode facilitar bastante.