logging – ¿Cómo puedo rotar muchos archivos de registro en un subdirectorio diferente por rotación?

Pregunta:

Tengo un directorio con muchos archivos de registro, todos los cuales me gustaría rotar a diario. Por motivos organizativos, me gustaría poder mover los registros rotados a un directorio diferente (o subdirectorio) con nombre por fecha, manteniendo la última semana de registros.

Puedo usar logrotate para lograr la mayor parte de esto girando los archivos en el lugar o incluso moviéndolos a un solo directorio diferente usando la directiva olddir , pero tengo problemas para encontrar una solución para crear subdirectorios individuales por rotación. ¿Cómo puedo conseguir esto?:

Logs to rotate: /var/log/example/*

Desired target directories (keeping a week):
    /var/log/example/20121006/*
    [ ... ]
    /var/log/example/20121012/*

Respuesta:

Debería poder llamar a un script externo en la directiva postrotate :

postrotate
  /path/to/your.sh
endscript

y que ese script haga el movimiento, por ejemplo:

#!/bin/bash

newdir=/var/log/example/`date +%Y%m%d`

mkdir $newdir
mv /var/log/example.1.gz $newdir

find /var/log/example -mindepth 1 -maxdepth 1 -mtime +7 \
  -type d -print0 | xargs -0 rm -rf

Sin embargo, podría ser más fácil usar el dateext Directiva. Con eso, los archivos rotados se agregarán con una marca de tiempo (aunque no se moverán a un directorio diferente).

Consulte logrotate(8) para obtener detalles sobre ambas directivas.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım