Logrotate menghapus file sesuai urutan dalam daftar nama file log yang diurutkan secara leksikal, dan juga berdasarkan usia file (menggunakan waktu modifikasi terakhir dari file)
-
putar adalah jumlah maksimal file yang diputar, Anda mungkin menemukan. Jika ada lebih banyak file log yang diputar, namanya diurutkan secara leksikal dan yang terkecil secara leksikal dihapus.
-
maksimum mendefinisikan kriteria lain untuk menghapus file log yang diputar. File log apa pun yang diputar, yang lebih lama dari jumlah hari tertentu akan dihapus. Perhatikan, bahwa tanggal dideteksi dari waktu modifikasi terakhir file, bukan dari nama file.
-
format tanggal memungkinkan pemformatan khusus untuk tanggal dalam file yang diputar. Halaman manual mencatat, bahwa format akan menghasilkan penyortiran yang benar secara leksikal .
-
tanggal kemarin memungkinkan penggunaan tanggal dalam nama file log suatu hari nanti.
Untuk mempertahankan jumlah hari tertentu dalam file harian yang dirotasi (mis. 7), Anda harus menyetel rotate
ke nilai 7 dan Anda dapat mengabaikan maxage
, jika file Anda benar-benar dibuat dan dirotasi setiap hari.
Jika pembuatan log tidak terjadi selama beberapa hari, mis. selama 14 hari, jumlah file log yang dirotasi akan tetap sama (7).
maxage
akan memperbaiki situasi dalam skenario "log tidak diproduksi" dengan selalu menghapus file yang terlalu lama. Setelah 7 hari tanpa produksi log, tidak akan ada file log yang dirotasi.
Anda tidak dapat menggunakan dateformat
seperti yang ditunjukkan OP, karena tidak dapat diurutkan secara leksikal. Mengacau dengan dateformat
mungkin akan mengakibatkan penghapusan file log yang diputar selain yang sebenarnya Anda inginkan.
Kiat :Jalankan logrotate dari baris perintah dengan -d
opsi untuk menjalankan dry run:Anda akan melihat apa yang akan dilakukan logrotate tetapi sebenarnya tidak melakukan apa pun. Kemudian lakukan proses manual menggunakan -v
(verbose) sehingga Anda dapat memastikan bahwa apa yang dilakukan adalah apa yang Anda inginkan.
Solusi:bersihkan log yang dibuat oleh cron
Konsepnya adalah:
Biarkan cron membuat dan memperbarui file log, tetapi buat sedikit modifikasi untuk membuat file, mengikuti logrotate nama file standar saat menggunakan dateext
default
/data/tier2/scripts/logs/recover_standby_SID.log-`date +\%Y\%m\%d`.log
Gunakan logrotate hanya untuk menghapus file log yang terlalu lama
- bidik file log yang tidak ada
/data/tier2/scripts/logs/recover_standby_SID.log
- gunakan
missingok
untuk membiarkan pembersihan logrotate terjadi - atur
rotate
cukup tinggi, untuk menutupi jumlah file log yang harus disimpan (setidaknya 7, jika akan ada satu file log "diputar" sehari, tetapi Anda dapat dengan aman mengaturnya sangat tinggi seperti 9999) - setel
maxage
to 7. Ini akan menghapus file yang memiliki waktu modifikasi terakhir lebih dari 7 hari. dateext
digunakan hanya untuk memastikan, penelusuran logrotate untuk file lama tampak seperti diputar.
Logrotate file konfigurasi akan terlihat seperti:
data/tier2/scripts/logs/recover_standby_SID.log {
daily
missingok
rotate 9999
maxage 7
dateext
}
Solusi:putar langsung dengan logrotate sekali sehari
Saya tidak yakin, bagaimana file siaga pemulihan sumber dibuat, tetapi saya akan berasumsi, Oracle atau beberapa skrip Anda secara teratur atau terus-menerus menambahkan ke file /data/tier2/scripts/logs/recover_standby_SID.log
Konsepnya adalah:
- rotasi file sekali sehari dengan
logrotate
- bekerja secara langsung dengan file log yang berisi data pemulihan
/data/tier2/scripts/logs/recover_standby_SID.log
daily
akan menyebabkan rotasi sekali sehari (dalam hal bagaimanacron
mengertidaily
)rotate
harus disetel ke 7 (atau angka yang lebih tinggi).maxage
disetel ke 7 (hari)dateext
untuk menggunakan akhiran tanggal logrotate defaultdateyesterday
digunakan untuk menyebabkan sufiks tanggal dalam file yang dirotasi menjadi satu hari yang lalu.missingok
untuk membersihkan file lama meskipun tidak ada konten baru untuk dirotasi.
Konfigurasi logrotate akan terlihat seperti:
data/tier2/scripts/logs/recover_standby_SID.log {
daily
missingok
rotate 7
maxage 7
dateext
dateyesterday
}
Perhatikan, bahwa Anda mungkin perlu sedikit bermain dengan copytruncate
dan opsi serupa lainnya yang terkait dengan bagaimana file log sumber dibuat oleh proses eksternal dan bagaimana reaksinya terhadap tindakan rotasi.