Masalah dengan logrotate adalah bahwa ia memiliki satu file konfigurasi Global, dan TIDAK membiarkan Anda menjalankan file log tunggal memutar sub-konfigurasi sambil tetap menerapkan opsi yang diatur dalam file konfigurasi global. Itu tidak memiliki cara yang baik untuk menjalankan pemeriksaan file rotasi SATU log, persis seperti ketika menjalankan setiap malam dari cron. Itu bisa dilakukan dengan opsi 'batas file log ini', atau lebih baik lagi, 'jalankan konfigurasi global, tetapi hanya sertakan file sub-konfigurasi ini'.
perhatikan bahwa --forceakan merotasi file walaupun mereka tidak memenuhi kriteria yang ditentukan seperti ukuran kecil, usia, dll.
xofer
4
Jika Anda menempatkan file config logrotate di /etc/logrotate.d/custom.conf apakah artinya ini, Anda tidak perlu menentukan ukuran / waktu kapan log harus diputar secara otomatis? Atau haruskah Anda meletakkan konfigurasi di folder lain jika Anda tidak ingin membuatnya berputar secara otomatis?
Damainman
18
Kriteria "notifempty" tidak diabaikan oleh "--force". Ini mengejutkan saya untuk sementara waktu, jadi saya menyebutkan ini sebagai pengecualian terhadap pernyataan @xofer.
thelogix
16
Anda bisa memutar semua dengan logrotate --force /etc/logrotate.d/(hanya nama direktori)
fcm
1
Memang benar bahwa --forceakan memaksa rotasi bahkan jika file tidak memenuhi kriteria (usia, ukuran, dll), tetapi harap pertimbangkan bahwa ini adalah satu-satunya cara untuk menemukan masalah nyata yang logrotate -dtidak akan muncul (misalnya, saya memiliki server yang kehabisan ruang karena logrotate tidak berjalan selama berbulan-bulan ... dan terima kasih kepada --forcesaya menemukan bahwa ada File existskesalahan. Saya secara manual menghapus file-file itu dan sekarang rotasi dengan benar bekerja lagi!
lucaferrario
559
logrotate -d [your_config_file] memanggil mode debug, memberi Anda deskripsi verbal tentang apa yang akan terjadi, tetapi membiarkan file log tidak tersentuh.
mereka yang datang ke sini mencari jawaban pertanyaan seperti "bagaimana saya bisa menguji conf logrotate saya?" dapat menganggap ini sebagai jawaban, karena hanya
MENGUJI
tidak terhanyut dengan pendekatan Anda, saya mencoba logrotate --forcedan bekerja dengan baik.
Benyamin Jafari
122
Jika Anda ingin menjalankan secara paksa direktori tunggal atau file log daemon tertentu, Anda biasanya dapat menemukan konfigurasinya /etc/logrotate.d, dan mereka akan bekerja mandiri.
Ingatlah bahwa konfigurasi global yang ditentukan dalam /etc/logrotate.conftidak akan berlaku, jadi jika Anda melakukan ini, Anda harus memastikan Anda menentukan semua opsi yang Anda inginkan dalam /etc/logrotate.d/[servicename]file konfigurasi secara khusus.
Anda dapat mencobanya -duntuk melihat apa yang akan terjadi:
logrotate -df /etc/logrotate.d/nginx
Kemudian Anda dapat menjalankan (menggunakan nginx sebagai contoh):
Ini bagus dan bagus, tetapi Anda kehilangan semua pengaturan global yang Anda miliki di "/etc/logrotate.conf". Saya menulis sebuah skrip untuk menggabungkan file logrotate global dan spesifik bersama-sama kemudian menggunakannya untuk menyelesaikan masalah ini. (lihat jawaban saya).
anthony
Menggunakan logrotate -d /etc/logrotate.confakan berjalan melalui file conf lain yang disertakan juga.
wmassingham
61
Anda mungkin ingin menjalankannya dalam mode verbose + force.
Ini /var/lib/logrotate.statusfile tidak ada pada Debian Squeeze.
Lashae
Coba / var / lib / logrotate / status. Saya tidak yakin apakah ini debian / redhat, atau jika saya meletakkan "." di mana saya seharusnya meletakkan "/".
Script ini akan menjalankan hanya file sub-konfigurasi logrotate tunggal yang ditemukan di "/etc/logrotate.d", tetapi termasuk pengaturan global dari dalam file konfigurasi global "/etc/logrotate.conf". Anda juga dapat menggunakan pilihan lain untuk mengujinya ...
Jawaban:
Iya:
logrotate --force $CONFIG_FILE
sumber
--force
akan merotasi file walaupun mereka tidak memenuhi kriteria yang ditentukan seperti ukuran kecil, usia, dll.logrotate --force /etc/logrotate.d/
(hanya nama direktori)--force
akan memaksa rotasi bahkan jika file tidak memenuhi kriteria (usia, ukuran, dll), tetapi harap pertimbangkan bahwa ini adalah satu-satunya cara untuk menemukan masalah nyata yanglogrotate -d
tidak akan muncul (misalnya, saya memiliki server yang kehabisan ruang karena logrotate tidak berjalan selama berbulan-bulan ... dan terima kasih kepada--force
saya menemukan bahwa adaFile exists
kesalahan. Saya secara manual menghapus file-file itu dan sekarang rotasi dengan benar bekerja lagi!logrotate -d [your_config_file]
memanggil mode debug, memberi Anda deskripsi verbal tentang apa yang akan terjadi, tetapi membiarkan file log tidak tersentuh.sumber
logrotate --force
dan bekerja dengan baik.Jika Anda ingin menjalankan secara paksa direktori tunggal atau file log daemon tertentu, Anda biasanya dapat menemukan konfigurasinya
/etc/logrotate.d
, dan mereka akan bekerja mandiri.Ingatlah bahwa konfigurasi global yang ditentukan dalam
/etc/logrotate.conf
tidak akan berlaku, jadi jika Anda melakukan ini, Anda harus memastikan Anda menentukan semua opsi yang Anda inginkan dalam/etc/logrotate.d/[servicename]
file konfigurasi secara khusus.Anda dapat mencobanya
-d
untuk melihat apa yang akan terjadi:Kemudian Anda dapat menjalankan (menggunakan nginx sebagai contoh):
Dan log nginx saja akan diputar.
sumber
logrotate -d /etc/logrotate.conf
akan berjalan melalui file conf lain yang disertakan juga.Anda mungkin ingin menjalankannya dalam mode verbose + force.
logrotate -vf /etc/logrotate.conf
sumber
Cara menjalankan semua logrotate adalah:
yang akan menjalankan file logrotate primer, yang mencakup konfigurasi logrotate lainnya juga
sumber
Keluarkan perintah berikut, cara menjalankan logrotate yang ditentukan:
Pilihan:
-v: tunjukkan prosesnya
-f: memaksa menjalankan
custom: pengaturan log yang ditentukan pengguna
misal: mongodb-log
sumber
edit /var/lib/logrotate.status untuk mereset tanggal 'terakhir diputar' pada file log yang ingin Anda uji.
Kemudian jalankan
logrotate YOUR_CONFIG_FILE
.Atau Anda dapat menggunakan flag --force, tetapi mengedit logrotate.status memberi Anda lebih presisi atas apa yang bisa dan tidak diputar.
sumber
/var/lib/logrotate.status
file tidak ada pada Debian Squeeze.Membuat skrip shell untuk memecahkan masalah.
http://www.ict.griffith.edu.au/anthony/software/#logrotate_one
Script ini akan menjalankan hanya file sub-konfigurasi logrotate tunggal yang ditemukan di "/etc/logrotate.d", tetapi termasuk pengaturan global dari dalam file konfigurasi global "/etc/logrotate.conf". Anda juga dapat menggunakan pilihan lain untuk mengujinya ...
Sebagai contoh...
sumber