Est logrotate qui se cache quelque part sous OSX, ou existe-t-il un équivalent ? Il n'est pas dans /usr/sbin
.
Réponses
Trop de publicités?Sur la base de la réponse de Brian Armstrong, voici quelque chose avec un peu plus d'explications et une correction. Ceci gère le journal créé par postgres sur OSX installé par Homebrew. Situé à /etc/newsyslog.d/postgresql.conf
:
# logfilename [owner:group] mode count size(KB) when flags [/pid_file] [sig_num]
/usr/local/var/postgres/postgresql.log : 600 2 2048 * J /usr/local/var/postgres/postmaster.pid
Cela fera tourner le fichier journal lorsqu'il atteindra une taille de 2 Mo, conservera 2 archives (pour un total de 6 Mo de stockage utilisé), et compressera les archives en bzip2. Il notifiera au processus postgres de rouvrir les fichiers journaux une fois la rotation effectuée, ce qui est nécessaire pour obtenir de nouvelles entrées de journal et pour libérer réellement l'espace disque sans redémarrer la machine.
Il est important de noter que la taille est exprimée en Ko et non en octets.
Vous pouvez tester le fichier de configuration (sans affecter aucun fichier) en utilisant sudo newsyslog -nvv
.
La documentation de newsyslog se trouve ici : http://www.freebsd.org/cgi/man.cgi?newsyslog.conf(5) . Également utilisé : http://www.redelijkheid.com/blog/2011/3/28/adding-custom-logfile-to-os-x-server-log-rotation.html
OS X a plusieurs façons de faire tourner/expirer/etc. ses journaux, selon le type de journal en question :
- Pour les fichiers journaux réguliers (c'est-à-dire les fichiers texte qui sont continuellement ajoutés), newsyslog peut les faire pivoter en fonction de la taille ou de l'heure, bien qu'il ne semble pas disposer d'autant d'options que le programme
logrotate
. Il est configuré par/etc/newsyslog.conf
y/etc/newsyslog.d/*
(en général, vous devriez ajouter des fichiers à/etc/newsyslog.d/
pour ajouter des journaux à sa liste de gestion). - Le système syslog d'OS X est en train de migrer de ce format de texte brut vers un format de base de données, principalement dans les domaines suivants
/var/log/asl/
. Je ne comprends pas encore tout à fait ce système, mais cette base de données semble être purgée par aslmanager qui est configuré par/etc/asl.conf
. - Pour les répertoires qui ont des "entrées" de journal individuelles ajoutées en tant que fichiers séparés (principalement
/Library/Logs/CrashReporter/
), les fichiers sont purgés par/etc/periodic/daily/100.clean-logs
. Ses politiques (quels répertoires analyser et combien de temps laisser les fichiers) sont configurées dans le module de gestion de la sécurité./etc/defaults/periodic.conf
mais si vous voulez les remplacer/changer, vous devez créer/etc/periodic.conf.local
et mettez-y vos personnalisations.
Si ce que vous voulez faire pivoter ne correspond à aucun de ces modèles, vous pouvez ajouter vos propres scripts à la liste de contrôle de l'UE. /etc/periodic/daily/
(qui aura lieu tous les matins à 3h15), /etc/periodic/weekly/
(tous les samedis matin à 3h15), ou encore /etc/periodic/monthly/
(le premier de chaque mois à 5h30).
Vous pouvez obtenir logrotate via Homebrew. Voici les notes que j'ai prises lors de la mise en place de ce système.
Installer
brew install logrotate
Configurer la rotation des journaux
Les fichiers de configuration de la rotation des journaux se trouvent dans /usr/local/etc/logrotate.d/
Modifier le fichier de configuration. Par exemple, je voulais faire tourner certains fichiers "/var/log/tend_*.log" que j'ai introduits :
sudo vi /usr/local/etc/logrotate.d/tend.conf
Contenu : /var/log/tend_*.log { daily copytruncate rotate 3 size 10M compress }
Testez-le
sudo logrotate -v -f /usr/local/etc/logrotate.d
Démarrer le service
sudo brew services start logrotate
Redémarrer le service
sudo brew services restart logrotate
newsyslog
fonctionne automatiquement sur OSX, j'utilise un fichier de configuration comme celui-ci dans /etc/newsyslog.d/rails_apps.conf
pour garder mes fichiers journaux de développement réduits à 5MB
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]
/Users/barmstrong/code/**/log/*.log 666 0 5242880 * G
Une façon de le faire :
http://blog.cantremember.com/logrotate-mac-os-launch-daemon-with-legacy-macport/