Equivalente a logrotate no OSX

52

O logrotate está escondido em algum lugar no OSX ou existe um equivalente? Não está dentro /usr/sbin.

Steve Bennett
fonte
Percebo que há newsyslog, mas isso não é exatamente o mesmo e requer raiz.
Steve Bennett
Logrotate pode ser portado, eu me pergunto.
Tom O'Connor
verifique / etc / periodic, acredito que a rotação de logs é implementada por padrão como um conjunto de scripts de shell. Observe também o newsyslog (/etc/newsyslog.d e a página do manual) para obter uma maneira de fazê-lo com base no tamanho do arquivo.
malcolmpdx
obrigado pelas dicas - existem scripts em / etc / periodic #
Steve Bennett
@SteveBennett De que outra forma as pessoas receberão seus crachás "Críticos"? Algumas pessoas estão aqui apenas pelos emblemas e reputação, você não sabia.
Mark Fisher

Respostas:

23

Com base na resposta de Brian Armstrong, aqui está algo com um pouco mais de explicação e correção. Isso lida com o log criado pelo postgres no OSX instalado pelo Homebrew. Localizado em /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 

Isso girará o arquivo de log quando atingir 2 MB de tamanho, manterá 2 arquivos (para um total de 6 MB de armazenamento usado) e compactará os arquivos compactados com o bzip2. Ele notificará o processo do postgres para reabrir os arquivos de log uma vez rotacionados, o que é necessário para obter novas entradas de log e liberar realmente o espaço em disco sem reiniciar a máquina.

Importante observar que o tamanho está em KB, não em bytes.

Você pode testar o arquivo de configuração (sem afetar nenhum arquivo) usando sudo newsyslog -nvv.

A documentação do newsyslog está localizada aqui: http://www.freebsd.org/cgi/man.cgi?newsyslog.conf(5) . Também usado: http://www.redelijkheid.com/blog/2011/3/28/adding-custom-logfile-to-os-x-server-log-rotation.html

Robin Daugherty
fonte
21

O OS X tem várias maneiras de rotacionar / expirar / etc seus logs, dependendo do tipo de log em questão:

  1. Para arquivos de log regulares (ou seja, arquivos de texto que são continuamente anexados), o newsyslog pode girá-los com base no tamanho ou no tempo, embora não pareça ter tantas opções quanto logrotate. Ele é configurado por /etc/newsyslog.confe /etc/newsyslog.d/*(geralmente, você deve adicionar arquivos /etc/newsyslog.d/para adicionar logs à sua lista de gerenciamento).
  2. O sistema syslog do OS X está migrando deste formato de texto sem formatação para o formato de banco de dados, principalmente em /var/log/asl/. Ainda não entendo completamente esse sistema, mas esse banco de dados parece ter sido removido pelo aslmanager , configurado por /etc/asl.conf.
  3. Para diretórios que possuem "entradas" de log individuais adicionadas como arquivos separados (principalmente /Library/Logs/CrashReporter/), os arquivos são eliminados /etc/periodic/daily/100.clean-logs. Suas políticas (em quais diretórios verificar e por quanto tempo deixar os arquivos) estão configuradas /etc/defaults/periodic.conf, mas se você deseja substituí-las / alterá-las, deve criar /etc/periodic.conf.locale colocar suas personalizações lá.

Se o que você deseja girar não se encaixa em nenhum desses modelos, você pode adicionar seus próprios scripts /etc/periodic/daily/(que serão executados todas as manhãs às 3:15 da manhã), /etc/periodic/weekly/(todas as manhãs de sábado às 3:15 da manhã) ou /etc/periodic/monthly/(primeiro de todos os meses às 5:30 da manhã).

Gordon Davisson
fonte
11

newsyslogé executado automaticamente no OSX, eu uso um arquivo de configuração como este /etc/newsyslog.d/rails_apps.confpara manter meus arquivos de log de desenvolvimento aparados em 5 MB

# logfilename                           [owner:group]   mode count size     when  flags [/pid_file] [sig_num]
/Users/barmstrong/code/**/log/*.log                     666  0     5242880  *     G
Brian Armstrong
fonte
tamanho está em K, e um ":" é necessário para dono: grupo mesmo se eles estão em branco
Bryan Ash
9

Você pode obter o logrotate via Homebrew. Aqui estão minhas anotações sobre como configurar isso.

Instalar

brew install logrotate

Configurar rotação de log

Os arquivos de configuração de rotação de log estão em /usr/local/etc/logrotate.d/

Edite o arquivo de configuração. Por exemplo, eu queria rotacionar alguns arquivos "/var/log/tend_*.log" que apresentei:

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

Conteúdo: /var/log/tend_*.log { daily copytruncate rotate 3 size 10M compress }

Teste

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

Começar serviço

sudo brew services start logrotate

Reiniciar serviço

sudo brew services restart logrotate

broofa
fonte