web-dev-qa-db-fra.com

Équivalent de logrotate sur OSX

logrotate se cache-t-il quelque part sur OSX, ou y a-t-il un équivalent? Ce n'est pas dans /usr/sbin.

54
Steve Bennett

Basé sur la réponse de Brian Armstrong, voici quelque chose avec un peu plus d'explications et une correction. Cela 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 pivoter le fichier journal lorsqu'il atteindra 2 Mo, conservera 2 archives (pour un total de 6 Mo de stockage utilisé) et compressera bzip2 les archives. Il avertira le processus postgres de rouvrir les fichiers journaux une fois tournés, ce qui est nécessaire pour obtenir de nouvelles entrées de journal et libérer réellement l'espace disque sans redémarrer la machine.

Il est important de noter que la taille est en Ko, pas 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

26
Robin Daugherty

OS X a plusieurs façons de faire pivoter/expirer/etc ses journaux, selon le type de journal en question:

  1. Pour les fichiers journaux ordinaires (c'est-à-dire les fichiers texte qui sont continuellement ajoutés), newsyslog peut les faire pivoter en fonction de la taille ou du temps, bien qu'il ne semble pas avoir autant d'options que logrotate . Il est configuré par /etc/newsyslog.conf et /etc/newsyslog.d/* (en général, vous devez ajouter des fichiers à /etc/newsyslog.d/ pour ajouter des journaux à sa liste de gestion).
  2. Le système syslog d'OS X migre de ce format de texte brut vers le format de base de données, principalement dans /var/log/asl/. Je ne comprends pas encore complètement ce système, mais cette base de données semble être purgée par aslmanager , qui est configuré par /etc/asl.conf.
  3. 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 /etc/defaults/periodic.conf, mais si vous souhaitez les remplacer/les modifier, vous devez créer /etc/periodic.conf.local et y mettre vos personnalisations.

Si ce que vous souhaitez faire pivoter ne correspond à aucun de ces modèles, vous pouvez ajouter vos propres scripts à /etc/periodic/daily/ (qui aura lieu tous les matins à 3 h 15), /etc/periodic/weekly/ (tous les samedis matin à 3 h 15) ou /etc/periodic/monthly/ (le premier de chaque mois à 5h30).

22
Gordon Davisson

newsyslog s'exécute automatiquement sur OSX, j'utilise un fichier de configuration comme celui-ci dans /etc/newsyslog.d/Rails_apps.conf pour conserver mes fichiers journaux de développement à 5 Mo

# logfilename                           [owner:group]   mode count size     when  flags [/pid_file] [sig_num]
/Users/barmstrong/code/**/log/*.log                     666  0     5242880  *     G
11
Brian Armstrong

Vous pouvez obtenir logrotate via Homebrew. Voici mes notes de mise en place.

Installer

brew install logrotate

Configurer la rotation des journaux

Les fichiers de configuration de la rotation des journaux sont dans /usr/local/etc/logrotate.d/

Modifier le fichier de configuration. Par exemple. Je voulais faire pivoter 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émarrez le service

Sudo brew services restart logrotate

9
broofa
0
Steve Bennett