Como tornar a saída do log do docker em um arquivo e torná-lo renomeado (backup) quando ele atinge o tamanho máximo do arquivo no Linux

0

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
    
por namalfernandolk 28.02.2018 / 17:41

0 respostas