Ya, ada cara yang tepat: Anda tidak menghapus log sama sekali. Anda memutar mereka. Rotasi melibatkan pengalihan output log ke file baru, dengan nama yang sama, dengan file log N sebelumnya disimpan di bawah set nama file terkait N.
Bagaimana seseorang memutar log tergantung dari bagaimana seseorang menulisnya di tempat pertama. Ini adalah poin yang sering diabaikan. Beberapa jawaban di sini menyentuh setidaknya, menyebutkan bahwa beberapa program logging menyimpan deskriptor file terbuka untuk file log, jadi hanya menghapus file tidak akan membebaskan ruang, atau bahkan beralih output ke file log baru.
Jika program yang menulis file log multilog
dari daemontools
paket , misalnya, maka Anda tidak melakukan apa pun untuk memutar log sama sekali - tidak ada skrip manual, tidak ada cron
pekerjaan. Katakan saja multilog
bahwa log output adalah ke direktori, dan itu sendiri akan mempertahankan secara otomatis diputar dan ukuran file log N tertutup dalam direktori itu.
Jika program yang menulis file log svlogd
dari runit
paket , untuk contoh lain, maka banyak hal yang sama berlaku. Anda tidak melakukan apa-apa selain dari titik alat di direktori. Itu sendiri akan memelihara satu set N file log yang diputar secara otomatis dan ukuran-capped dalam direktori itu.
Jika Anda menggunakan rsyslog
untuk menulis file log, maka program logging dapat diperintahkan untuk berhenti setelah file log mencapai ukuran tertentu dan menjalankan skrip . Anda harus menulis daging skrip, untuk benar-benar mengganti nama file log dan menghapus file log lama berdasarkan batasan ukuran total, tetapi setidaknya program logging telah menutup file dan berhenti menulis log saat ini sedang terjadi.
Cara lama syslogd
memutar log, masih diharapkan oleh program logging seperti syslog-ng dan dicontohkan oleh alat-alat seperti yang logrotate
disebutkan djangofan
dalam jawaban lain di sini, agak lebih serampangan. Seseorang menjalankan cron
pekerjaan yang secara berkala mengganti nama file log, dan me-restart daemon logging (menggunakan pengawas daemon apa pun yang dijalankannya di bawah). Masalah dengan ini, tentu saja adalah bahwa hal itu tidak memberlakukan batas ukuran keseluruhan. Pada minggu-minggu yang lambat seseorang dapat memperoleh N file log harian yang sangat kecil, sedangkan pada hari-hari yang sibuk seseorang dapat memperoleh 1 file log yang sangat besar yang melebihi batas ukuran.
Inilah sebabnya mengapa nanti dan alat yang lebih baik suka multilog
dan svlogd
memiliki opsi konfigurasi ukuran file dan sebenarnya memeriksa ukuran file log itu sendiri, tentu saja. Dunia telah belajar bahwa polling log pada jadwal dengan cron
pekerjaan, atau bahkan logrotate
daemon, meninggalkan jendela untuk ukuran menjadi salah, dan bahwa tempat yang tepat untuk melakukan pemeriksaan ini, dan dengan keras menegakkan topi ukuran yang ditentukan administrator sehingga seseorang file log tidak pernah menelan partisi yang mereka aktifkan, ada dalam program yang sebenarnya menulis file di tempat pertama.