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 multilogprovient du daemontoolspackage , par exemple, vous ne faites absolument rien pour faire pivoter les journaux - pas de scripts manuels, pas de crontravaux. Indiquez simplement multilogque 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 svlogdprovient du runitpackage , 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 rsyslogpour é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 syslogdmé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 logrotatementionnés djangofandans une autre réponse ici, est un peu plus aléatoire. L'un d'eux exécute un crontravail 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 multiloget svlogdont 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 crontravaux, voire un logrotatedé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.