Назад | Перейти на главную страницу

Эквивалент logrotate в OSX

Является logrotate где-то прячется на OSX или есть эквивалент? Это не в /usr/sbin.

Основываясь на ответе Брайана Армстронга, вот что-то с небольшим дополнительным объяснением и исправлением. Это обрабатывает журнал, созданный postgres на OSX, установленном Homebrew. Расположен в /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 

Это приведет к ротации файла журнала, когда он достигнет размера 2 МБ, сохранит 2 архива (всего используется хранилище 6 МБ) и сожмет архивы с помощью bzip2. Он уведомит процесс postgres о повторном открытии файлов журнала после ротации, что необходимо для получения новых записей журнала и фактического освобождения дискового пространства без перезапуска компьютера.

Важно отметить, что размер указывается в килобайтах, а не в байтах.

Вы можете протестировать файл конфигурации (не затрагивая никакие файлы), используя sudo newsyslog -nvv.

Документация newsyslog находится здесь: http://www.freebsd.org/cgi/man.cgi?newsyslog.conf(5). Также используются: http://www.redelijkheid.com/blog/2011/3/28/adding-custom-logfile-to-os-x-server-log-rotation.html

В OS X есть несколько способов ротации, истечения срока действия и т. Д. В зависимости от типа журнала, о котором идет речь:

  1. Для обычных файлов журналов (т. Е. Текстовых файлов, которые постоянно добавляются к ним), журнал новостей может вращать их в зависимости от размера или времени, хотя, похоже, у него не так много вариантов, как logrotate. Он настроен /etc/newsyslog.conf и /etc/newsyslog.d/* (как правило, вы должны добавлять файлы в /etc/newsyslog.d/ для добавления журналов в свой список управления).
  2. Система системного журнала OS X переходит из этого текстового формата в формат базы данных, в основном в /var/log/asl/. Я еще не совсем понимаю эту систему, но кажется, что эта база данных очищена aslmanager, который настраивается /etc/asl.conf.
  3. Для каталогов, которые имеют отдельные «записи» журнала, добавленные как отдельные файлы (в основном /Library/Logs/CrashReporter/), файлы очищаются /etc/periodic/daily/100.clean-logs. Его политики (какие каталоги сканировать и как долго оставлять файлы) настраиваются в /etc/defaults/periodic.conf, но если вы хотите переопределить / изменить их, вы должны создать /etc/periodic.conf.local и поместите туда свои настройки.

Если то, что вы хотите повернуть, не соответствует ни одной из этих моделей, вы можете добавить свои собственные скрипты в /etc/periodic/daily/ (который будет запускаться каждое утро в 3:15), /etc/periodic/weekly/ (каждую субботу утром в 3:15) или /etc/periodic/monthly/ (первого числа каждого месяца в 5:30 утра).

Вы можете получить logrotate через Homebrew. Вот мои заметки о настройке.

Установить

brew install logrotate

Настроить ротацию журналов

Файлы конфигурации ротации журналов находятся в /usr/local/etc/logrotate.d/

Отредактируйте файл конфигурации. Например. Я хотел повернуть некоторые файлы "/var/log/tend_*.log", которые я представил:

sudo vi /usr/local/etc/logrotate.d/tend.conf

Содержание: /var/log/tend_*.log { daily copytruncate rotate 3 size 10M compress }

Проверить это

sudo logrotate -v -f /usr/local/etc/logrotate.d

Начать обслуживание

sudo brew services start logrotate

Перезапустить службу

sudo brew services restart logrotate

newsyslog запускается автоматически в OSX, я использую такой конфигурационный файл в /etc/newsyslog.d/rails_apps.conf чтобы мои файлы журнала разработчика были обрезаны до 5 МБ

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

Один из способов сделать это:

http://blog.cantremember.com/logrotate-mac-os-launch-daemon-with-legacy-macport/