Oui, il existe un moyen approprié: vous n'effacez pas les journaux du tout. Vous les faites pivoter . La rotation implique la commutation de la sortie du journal dans un nouveau fichier, sous le même nom, avec les N fichiers journaux précédents conservés sous un ensemble de N noms de fichiers liés.
La façon dont on fait pivoter les journaux dépend de la façon dont on les écrit en premier lieu. C'est un point souvent négligé. Certaines des réponses ici abordent au moins le problème, en mentionnant que certains programmes de journalisation conservent un descripteur de fichier ouvert pour le fichier journal. La suppression du fichier ne libérera donc pas l’espace, voire ne basculera même pas la sortie vers un nouveau fichier journal.
Si le programme qui écrit le fichier journal multilog
provient du daemontools
package , par exemple, vous ne faites absolument rien pour faire pivoter les journaux - pas de scripts manuels, pas de cron
travaux. Indiquez simplement multilog
que la sortie du journal se trouve dans un répertoire et il conservera lui-même un ensemble de N fichiers journaux automatiquement pivotés et dont la taille est limitée, dans ce répertoire.
Si le programme écrivant les fichiers journaux svlogd
provient du runit
package , il en va pratiquement de même pour un autre exemple. Vous ne faites rien du tout sauf de pointer l'outil vers un répertoire. Il gérera lui-même un ensemble de N fichiers journaux soumis à une rotation et à une taille automatiquement dans ce répertoire.
Si vous utilisez rsyslog
pour écrire des fichiers journaux, vous pouvez indiquer au programme de journalisation de s’arrêter lorsque le fichier journal atteint une certaine taille et d’exécuter un script . Vous devez écrire le contenu du script pour renommer le fichier journal et supprimer les anciens fichiers journaux en fonction des contraintes de taille totale, mais au moins le programme de journalisation a fermé le fichier et mis en pause l'écriture du journal pendant que cela se produit.
L'ancienne syslogd
méthode de rotation des journaux, encore attendue par les programmes de journalisation tels que syslog-ng et illustrée par des outils tels que ceux logrotate
mentionnés djangofan
dans une autre réponse ici, est un peu plus aléatoire. L'un d'eux exécute un cron
travail qui renomme périodiquement les fichiers journaux et redémarre le démon de journalisation (en utilisant le superviseur de démon sous lequel il est exécuté). Le problème avec ceci, bien sûr, est qu’il n’impose pas de limite de taille globale. Pendant les semaines lentes, on peut obtenir N très petits fichiers journaux quotidiens, tandis que les jours chargés, on peut obtenir 1 très gros fichier journal dépassant largement la taille limite.
Voilà pourquoi plus tard et de meilleurs outils comme multilog
et svlogd
ont des options de configuration de la taille de fichier et en fait vérifier le fichier journal se tailles, bien sûr. Le monde a appris que l'interrogation des journaux selon un calendrier comportant des cron
travaux, voire un logrotate
démon, laisse les fenêtres invisibles pour la taille, et qu'il s'agit du lieu approprié pour effectuer ces vérifications et pour appliquer de façon aussi stricte les limites de taille définies par l'administrateur les fichiers journaux n’avalent jamais la partition sur laquelle ils sont, c’est dans le programme qui écrit réellement les fichiers.