J'ai une application Linux qui écrit continuellement des informations de journalisation dans un fichier journal, par exemple. /var/log/application.log
. Comme l'application ne fait pas pivoter le fichier automatiquement, ce fichier journal peut atteindre une taille de gigaoctets en quelques semaines, donc je veux pouvoir faire pivoter ce fichier correctement
Ma principale préoccupation ici est que pour faire pivoter un fichier ouvert par l'application à tout moment, je devrai probablement:
Déplacer le fichier vers sa forme pivotée
/var/log/application.log -> /var/log/application.log.2013-01-28
Créez un vide
/var/log/application.log
. Obs: à ce stade, le processus de candidature écrit toujours/var/log/application.log.2013-01-28
Modifiez le descripteur de fichier du processus de demande pour revenir à
/var/log/application.log
Alors, ai-je raison? Si oui, comment faire? (principalement la modification de la partie descripteur de fichier)
Si je ne le suis pas, quelle est la bonne façon et comment le faire?
dup2
le nouveau descripteur sur l'ancien, puis fermez le nouveau descripteur.)Réponses:
Écrivez une
logrotate
config à utilisercopytruncate
la source
La plupart de ces applications répondent à un signal, tel que
SIGHUP
, et fermeront et rouvriront leurs fichiers journaux à la réception du signal. Consultez la documentation de votre application pour le bon signal à envoyer.la source