5 votes

Faire pivoter les fichiers journaux avec un horodatage dans le nom de fichier

J'ai un répertoire de journaux dans lequel mon application écrit. Il crée un fichier journal comme celui-ci :

2015-01-22-10-full-activity.log
2015-01-22-11-full-activity.log
2015-01-22-12-full-activity.log
2015-01-22-13-full-activity.log

Je veux compresser chaque fichier sauf le dernier et supprimer tout fichier datant de plus de 3 jours.

Je pensais que logrotate pourrait le faire pour moi, mais je n'arrive pas à le comprendre, potentiellement parce que je nomme mon journal d'activité avec l'heure dans son nom.

Des idées ?

9voto

Craig Miskell Points 3976

Si vous créez déjà les fichiers avec la date dans le nom, logrotate n'est pas la réponse ; il est basé sur l'idée que l'application écrit toujours dans le même fichier journal (par exemple /var/log/app/output.log), puis logrotate se charge de renommer/compresser les fichiers et indique à l'application de ré-ouvrir le fichier cible d'origine.

Dans ce cas, peut-être une paire de tâches cron utilisant "find" avec -mtime, par exemple :

 

1 0 * * * root find /chemin/vers/logs/*.log -mtime +1 -daystart -exec gzip {} \;

 

2 0 * * * root find /chemin/vers/logs/*.log.gz -mtime +3 -daystart -delete

Vous voudrez peut-être ajuster les chiffres sur -mtime et l'utilisation de -daystart (ou pas) pour obtenir les résultats précis que vous souhaitez (dépend de la façon dont vous voulez compter les 'jours', etc.)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X