Apakah mungkin untuk logrotate
mempertimbangkan file log dalam direktori dan semua subdirektori? (Yaitu tanpa secara eksplisit daftar subdirektori.)
62
Seberapa dalam subdirektori Anda pergi?
/var/log/basedir/*.log /var/log/basedir/*/*.log {
daily
rotate 5
}
Akan memutar semua file .log di berbasisir / serta semua file .log pada anak langsung dari basisir. Jika Anda juga perlu masuk 1 level lebih dalam, tambahkan saja /var/log/basedir/*/*/*.log
sampai Anda memiliki level masing-masing.
Ini dapat diuji dengan menggunakan file config logrotate terpisah yang berisi batasan yang tidak akan terpenuhi (minsize tinggi) dan kemudian menjalankan log, putar diri Anda dalam mode verbose
logrotate -d testconfig.conf
flag -d akan menampilkan setiap file log yang sedang dipertimbangkan untuk diputar.
-d
menempatkan logrotate dalam mode menjalankan kering (yaitu tidak benar-benar mengubah apa pun) sebenarnya.-f
pilihan memberitahu logrotate untuk "memaksa run". kata kosong di akhir perintah adalah file konfigurasi untuk digunakan, bukan default. jadilogrotate -f /some/config
artinya jalankan dengan file konfigurasi itu, dan selalu jalankan walaupun file konfigurasi mengatakan belum waktunya untuk menjalankannya. Untuk mata saya yang tidak terlatih, dan kepada pendahulu saya yang melakukan pekerjaan cron dengan itu, sepertinya-f
hanya menentukan file konfigurasi. Cukup membingungkan.Dalam kasus saya, kedalaman subdirektori dapat berubah tanpa peringatan, jadi saya membuat skrip bash untuk menemukan semua subdirektori dan membuat entri konfigurasi untuk setiap direktori.
Ini juga penting bagi saya untuk menjaga struktur subdirektori setelah rotasi, yang wildcard (yaitu jawaban @ DanR) tampaknya tidak dilakukan. Jika Anda melakukan rotasi log harian, Anda bisa meletakkan skrip ini di cron-job harian.
Seperti yang disarankan @DanR, tes dengan
logrotate -d
sumber
Ini utas lama, tetapi Anda dapat melakukan hal berikut:
Dua bintang ini akan cocok dengan nol atau lebih direktori. Anda harus berhati-hati, bagaimana Anda mendefinisikan file log yang akan diputar, karena Anda dapat memutar file yang sudah diputar. Saya akan mengutip manual logrotate di sini.
sumber
globstar
sebelum menjalankan logrotate. Ini akan memungkinkannya untuk bashshopt -s globstar
.