3
respostas

Logs com Docker Compose

Olá,

Como eu faço para configurar o log no docker-compose, os tutoriais que vi mencionam a utilização do volume para que possa externalizar um arquivo de log do container para um host, mas, como é feito ?

3 respostas

Olá Bruno, tudo bem? Você fala em ver os logs dos containers é isso? Bem se for isso pode ser feito na linha de comando simplesmente usando o comando:

docker container logs --f <container-ID>

Isso usando o somente o Docker, já com o docker-compose podemos usar esse comando:

docker-compose logs

Que vai exibir os logs de todos os serviços no aplicativo definido no arquivo "docker-compose.yml", ou então esse outro comando:

docker-compose logs <nome-do-servico>

Para exibir os logs de um serviço especifico. É isso que você deseja ou é sobre logs de um projeto em si, de uma aplicação? Se for, então qual a aplicação, as tecnologias que você está utilizando nessa aplicação, e como a mesma gera e armazena os logs?

Fala pra gente essas informações, para podermos ajudar da melhor forma!

Olá Jonilson, obrigado pela atenção.

As instruções que você passou são para exibir os logs, no entanto, gostaria de saber como faço para armazenar os logs ?

Pesquisei na internet, e algumas instruções dizem para utilizar o "volume", através dos seguintes passos:

  • Criar uma pasta na maquina host ex: /var/log/<arquivo.log>
  • Configurar o volume no dockerfile e docker-compose indicando o endereço acima.

Efetuei esses passos, mas, o arquivo de log só aparece no container, ao acessar o mesmo caminho a máquina host o arquivo.log não existe.

Ao encerrar o container as informações gravadas no arquivo.log são reescritas e eu perco as informações anteriores. Necessito que o log seja gravado e armazenado e que não se perca quando ocorrer por exemplo a queda do servidor.

Como posso fazer essa configuração ?

Tem algumas coisas que não ficaram claro pra mim, quem cria esse <arquivo.log>? Ele é criado pelo container ou diretamente pelo host? É um simples arquivo de teste é isso? E como os logs serão armazenados nesse arquivo é atraves de um comando Linux mesmo? Bem, mesmo com essas dúvidas acima, vou tentar explicar como deveria ser, esse arquivo.log você deveria já criar o mesmo na pasta /var/log/, para poder compartilhar com o container por meio do bind de pastas (volumes) no arquivo docker-compose.yml, e além disso, qualquer que seja a estrategia que você esteja utilizando para salvar os logs nesse arquivo, você deve fazer com que apenas adicione novas linhas no arquivo sem excluir as anteriores, podendo ser algo como:

echo "NOVA LINHA DE LOG" >> /var/log/arquivo.log

Teste essa solução e fala pra gente se funcionou!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software