Equivalent de logrotate sur OSX

52

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

Steve Bennett
la source
Je remarque qu'il y a Newsyslog, mais ce n'est pas tout à fait pareil et nécessite root.
Steve Bennett
Peut logrotate être porté, je me le demande.
Tom O'Connor le
vérifiez / etc / périodique, je pense que la rotation du journal est implémentée par défaut comme un ensemble de scripts shell. Consultez également newsyslog (/etc/newsyslog.d et la page de manuel) pour savoir comment procéder en fonction de la taille du fichier.
Malcolmpdx
merci pour les astuces - il y a en effet des scripts dans / etc / périodique
Steve Bennett le
@SteveBennett Sinon, comment les gens vont-ils obtenir leur badge "Critic"? Certaines personnes ne sont ici que pour les badges et la réputation, vous ne saviez pas.
Mark Fisher

Réponses:

23

D'après 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 tourner le fichier journal lorsqu'il atteindra 2 Mo, conservera 2 archives (pour un total de 6 Mo de stockage utilisé) et bzip2-compressera les archives. 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 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 les fichiers) 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

Robin Daugherty
la source
21

OS X dispose de plusieurs méthodes pour faire pivoter / expirer / etc ses journaux, en fonction du type de journal en question:

  1. Pour les fichiers journaux normaux (c'est-à-dire les fichiers texte qui sont ajoutés en permanence), newsyslog peut les faire pivoter en fonction de la taille ou de la durée , bien qu'il ne semble pas avoir autant d'options que logrotate. Il est configuré par /etc/newsyslog.confet /etc/newsyslog.d/*(généralement, vous devez ajouter des fichiers /etc/newsyslog.d/pour ajouter des journaux à sa liste de gestion).
  2. Le système syslog d’OS X est en train de migrer de ce format de texte brut vers le format de base de données, principalement en format /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.
  3. Pour les répertoires ayant des "entrées" de journal individuelles ajoutées sous forme de fichiers séparés (principalement /Library/Logs/CrashReporter/), les fichiers sont purgés par /etc/periodic/daily/100.clean-logs. Ses stratégies (dans quels répertoires analyser et combien de temps laisser des fichiers) sont configurées /etc/defaults/periodic.conf, mais si vous souhaitez les remplacer / les modifier, vous devez créer /etc/periodic.conf.localet y placer vos personnalisations.

Si ce que vous voulez rotate ne correspond à aucun de ces modèles, vous pouvez ajouter vos propres scripts /etc/periodic/daily/(which'll être exécuté tous les matins à 3h15), /etc/periodic/weekly/(tous les samedis matin à 03h15), ou /etc/periodic/monthly/( d' abord tous les mois à 5h30).

Gordon Davisson
la source
11

newsyslogs'exécute automatiquement sur OSX, j'utilise un fichier de configuration comme celui-ci /etc/newsyslog.d/rails_apps.confpour conserver mes fichiers de journal de développement compressés à 5 Mo

# logfilename                           [owner:group]   mode count size     when  flags [/pid_file] [sig_num]
/Users/barmstrong/code/**/log/*.log                     666  0     5242880  *     G
Brian Armstrong
la source
la taille est exprimée en K, et un ":" est requis pour le propriétaire: groupe, même s'ils sont vides
Bryan Ash
9

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

Installer

brew install logrotate

Configurer la rotation du journal

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

Editer 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

Service de démarrage

sudo brew services start logrotate

Redémarrer le service

sudo brew services restart logrotate

broofa
la source