Eu quero fazer a saída do log do docker para um arquivo e torná-lo renomeado (backup) quando atingir o tamanho máximo do arquivo (por exemplo: 20000 aqui). Então, depois disso, novos logs devem ser registrados no novo arquivo.
Abaixo está uma abordagem que eu tomei. Lá é acionado uma vez que a alteração do arquivo e a verificação de tamanho também acontecem. Mas uma vez renomeado, não é registrado novamente.
Como posso fazer isso?
#!/bin/bash
docker logs -f <container-name> > /path/to/dockerlog/docker-container.log
FILENAME=/home/namal/dms/logs/integrationservice/magnify-server.log
### Set initial time of file
LTIME='stat -c %Z /path/to/dockerlog/docker-container.log'
while true
do
ATIME='stat -c %Z /path/to/dockerlog/docker-container.log'
if [[ "$ATIME" != "$LTIME" ]]
then
echo "File Changed"
FILESIZE=$(stat -c%s "$FILENAME")
echo "Size of $FILENAME = $FILESIZE bytes."
if [[ FILESIZE > 20000 ]]
then
echo "File size limit exceeded. Renaming"
today='date '+%Y_%m_%d__%H_%M_%S'';
mv /path/to/dockerlog/docker-container.log /path/to/dockerlog/docker-container-$today.log
# after this it is not getting logged anymore
fi
LTIME=$ATIME
fi
sleep 5
done