Setara dengan logrotate di OSX

52

Apakah logrotate bersembunyi di suatu tempat di OSX, atau ada yang setara? Itu tidak ada /usr/sbin.

Steve Bennett
sumber
Saya perhatikan ada newsyslog, tapi itu tidak persis sama dan membutuhkan root.
Steve Bennett
Dapatkah logrotate diporting, saya heran.
Tom O'Connor
periksa / etc / periodic, saya percaya bahwa rotasi log secara default diimplementasikan sebagai satu set skrip shell di sana. Lihat juga newsyslog (/etc/newsyslog.d dan halaman manual) untuk mengetahui cara melakukannya berdasarkan ukuran file.
malcolmpdx
terima kasih untuk tipsnya - memang ada skrip di / etc / periodic
Steve Bennett
@SteveBennett Bagaimana lagi orang-orang mendapatkan lencana "Critic" mereka? Beberapa orang hanya di sini untuk lencana dan reputasi, tidak tahukah kamu.
Mark Fisher

Jawaban:

23

Berdasarkan jawaban Brian Armstrong, ada sesuatu dengan sedikit penjelasan dan koreksi. Ini menangani log yang dibuat oleh postgres pada OSX yang diinstal oleh Homebrew. Terletak di /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 

Ini akan memutar file log ketika ukurannya mencapai 2MB, menyimpan 2 arsip (untuk total penyimpanan 6MB yang digunakan), dan mengompres arsip bzip2. Ini akan memberi tahu proses postgres untuk membuka kembali file log setelah diputar, yang diperlukan untuk mendapatkan entri log baru dan untuk benar-benar membebaskan ruang disk tanpa memulai ulang mesin.

Penting untuk dicatat bahwa ukurannya adalah dalam KB, bukan byte.

Anda dapat menguji file konfigurasi (tanpa mempengaruhi file apa pun) menggunakan sudo newsyslog -nvv.

dokumentasi newsyslog ada di sini: http://www.freebsd.org/cgi/man.cgi?newsyslog.conf(5) . Juga digunakan: http://www.redelijkheid.com/blog/2011/3/28/adding-custom-logfile-to-os-x-server-log-rotation.html

Robin Daugherty
sumber
21

OS X memiliki beberapa cara untuk memutar / kedaluwarsa / etc log-nya, tergantung pada jenis log yang dimaksud:

  1. Untuk file log biasa (yaitu file teks yang terus ditambahkan), newsyslog dapat memutarnya berdasarkan ukuran atau waktu, walaupun tampaknya tidak memiliki banyak opsi logrotate. Ini dikonfigurasi oleh /etc/newsyslog.confdan /etc/newsyslog.d/*(umumnya, Anda harus menambahkan file ke /etc/newsyslog.d/untuk menambahkan log ke daftar manajemennya).
  2. Sistem syslog OS X bermigrasi dari format teks biasa ke format basis data, terutama di /var/log/asl/. Saya belum sepenuhnya memahami sistem ini, tetapi database ini tampaknya dibersihkan oleh aslmanager , yang dikonfigurasi oleh /etc/asl.conf.
  3. Untuk direktori yang memiliki "entri" log individual ditambahkan sebagai file terpisah (terutama /Library/Logs/CrashReporter/), file-file tersebut dapat dibersihkan oleh /etc/periodic/daily/100.clean-logs. Kebijakannya (direktori mana yang akan dipindai & berapa lama meninggalkan file) dikonfigurasikan /etc/defaults/periodic.conf, tetapi jika Anda ingin menimpanya / mengubahnya, Anda harus membuat /etc/periodic.conf.localdan menempatkan kustomisasi Anda di sana.

Jika apa yang ingin Anda putar tidak sesuai dengan salah satu model ini, Anda dapat menambahkan skrip Anda sendiri /etc/periodic/daily/(yang akan dijalankan setiap pagi pukul 3:15 pagi), /etc/periodic/weekly/(setiap Sabtu pagi pukul 3:15 pagi), atau /etc/periodic/monthly/(pertama dari setiap bulan pukul 5.30 pagi).

Gordon Davisson
sumber
11

newsyslogberjalan secara otomatis di OSX, saya menggunakan file konfigurasi seperti ini /etc/newsyslog.d/rails_apps.confuntuk menjaga file log dev saya dipangkas menjadi 5MB

# logfilename                           [owner:group]   mode count size     when  flags [/pid_file] [sig_num]
/Users/barmstrong/code/**/log/*.log                     666  0     5242880  *     G
Brian Armstrong
sumber
ukuran dalam K, dan ":" diperlukan untuk pemilik: grup meskipun kosong
Bryan Ash
9

Anda bisa mendapatkan logrotate melalui Homebrew. Ini catatan saya dari pengaturan ini.

Pasang

brew install logrotate

Konfigurasikan rotasi log

Log konfigurasi file rotasi dalam /usr/local/etc/logrotate.d/

Edit file konfigurasi. Misalnya saya ingin memutar beberapa file "/var/log/tend_*.log" yang saya perkenalkan:

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

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

Uji itu

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

Memulai layanan

sudo brew services start logrotate

Mulai kembali layanan

sudo brew services restart logrotate

broofa
sumber