OSX'te logrotate eşdeğeri


52

Logrotate , OSX'te bir yere mi saklanıyor yoksa eşdeğeri var mı? İçeride değil /usr/sbin.


Newsyslog olduğunu fark ettim ama bu tamamen aynı değil ve kök gerektiriyor.
Steve Bennett

Logrotate taşınabiliyor mu, merak ediyorum.
Tom O'Connor,

kontrol / etc / periodic, log döndürmenin varsayılan olarak orada bir kabuk betiği seti olarak uygulandığına inanıyorum. Ayrıca dosya boyutuna göre bunu yapmanın bir yolu için newsyslog'a (/etc/newsyslog.d ve man sayfası) bakın.
malcolmpdx

ipuçları için teşekkürler - gerçekten / etc / periodic komut dosyaları var
Steve Bennett

@SteveBennett İnsanlar başka "eleştirmenler" rozetlerini nasıl alacaklar? Bazı insanlar sadece rozet ve itibar için buradalar, bilmiyor muydunuz?
Mark Fisher

Yanıtlar:


23

Brian Armstrong'un cevabına dayanarak, burada biraz daha fazla açıklama ve düzeltme içeren bir şey var. Bu, Homebrew tarafından kurulan OSX'te postgres'ler tarafından oluşturulan günlüğü işler. Bulunan /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 

Bu, 2 MB boyutuna ulaştığında günlük dosyasını döndürür, 2 arşiv tutar (kullanılan toplam 6 MB depolama alanı için) ve arşivleri bzip2 ile sıkıştırır. Postgres işlemine, bir kez döndürüldükten sonra günlük dosyalarını tekrar açmak ve yeni kayıt girişleri almak ve makineyi yeniden başlatmadan disk alanını boşaltmak için gerekli olan bildirme işlemi yapılacaktır.

Boyutun bayt değil KB cinsinden olduğunu not etmek önemlidir.

Kullanarak config dosyasını (hiçbir dosyayı etkilemeden) test edebilirsiniz sudo newsyslog -nvv.

newsyslog belgeleri burada bulunur: http://www.freebsd.org/cgi/man.cgi?newsyslog.conf(5) . Ayrıca kullanılır: http://www.redelijkheid.com/blog/2011/3/28/adding-custom-logfile-to-os-x-server-log-rotation.html


21

OS X, söz konusu log türüne bağlı olarak log'larını döndürme / sona erme / vb. Yöntemlerle çeşitli yollara sahiptir:

  1. Düzenli kayıt dosyaları (yani sürekli eklenmiş metin dosyaları) için, newsyslog , bu kadar çok seçeneğe sahip görünmese de, bunları büyüklük veya zamana göre döndürebilir logrotate. Tarafından yapılandırılır /etc/newsyslog.confve /etc/newsyslog.d/*(genellikle, /etc/newsyslog.d/yönetim listesine günlük eklemek için dosya eklemelisiniz).
  2. OS X'in syslog sistemi bu düz metin biçiminden, çoğunlukla da veritabanı biçimine geçiyor /var/log/asl/. Bu sistemi henüz tam olarak anlamadım, ancak bu veritabanı tarafından yapılandırılan aslmanager tarafından temizlendi /etc/asl.conf.
  3. Bireysel günlük "girişler" ayrı dosyalar olarak eklenmiş (genellikle /Library/Logs/CrashReporter/) dizinler için dosyalar temizlenir /etc/periodic/daily/100.clean-logs. Politikaları (hangi dizinlerin taranacağı ve dosyaların ne kadar süreyle bırakılacağı) içinde yapılandırılmıştır /etc/defaults/periodic.conf, ancak bunları geçersiz kılmak / değiştirmek istiyorsanız /etc/periodic.conf.localözelleştirmelerinizi oraya oluşturmalı ve koymalısınız.

Döndürmek istedikleriniz bu modellerin hiçbirine uymuyorsa, kendi komut dosyalarınızı /etc/periodic/daily/(her sabah sabah 3:15'te çalışacaksınız), /etc/periodic/weekly/(her cumartesi sabah 3: 15'te çalışacak ) veya /etc/periodic/monthly/(ilk olarak Her ay 05:30 da).


11

newsyslogotomatik olarak OSX’de çalışır, /etc/newsyslog.d/rails_apps.confdev log dosyalarımın 5MB’e kesilmesi için böyle bir config dosyası kullanıyorum

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

büyüklüğü K cinsindendir ve sahibi için bir ":" gereklidir: boş olsalar bile gruptur
Bryan Ash

9

Homebrew üzerinden logrotate alabilirsiniz. İşte bunu ayarlamaktan gelen notlarım.

Yüklemek

brew install logrotate

Günlük rotasyonunu yapılandır

Günlük döndürme yapılandırma dosyaları /usr/local/etc/logrotate.d/

Yapılandırma dosyasını düzenleyin. Örn: Tanıştırdığım bazı "/var/log/tend_*.log" dosyalarını döndürmek istedim:

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

İçindekiler: /var/log/tend_*.log { daily copytruncate rotate 3 size 10M compress }

Test et

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

Hizmeti başlat

sudo brew services start logrotate

Servisi yeniden başlat

sudo brew services restart logrotate


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.