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 multilogdari daemontoolspaket , misalnya, maka Anda tidak melakukan apa pun untuk memutar log sama sekali - tidak ada skrip manual, tidak ada cronpekerjaan. Katakan saja multilogbahwa 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 svlogddari runitpaket , 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 rsysloguntuk 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 syslogdmemutar log, masih diharapkan oleh program logging seperti syslog-ng dan dicontohkan oleh alat-alat seperti yang logrotatedisebutkan djangofandalam jawaban lain di sini, agak lebih serampangan. Seseorang menjalankan cronpekerjaan 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 multilogdan svlogdmemiliki opsi konfigurasi ukuran file dan sebenarnya memeriksa ukuran file log itu sendiri, tentu saja. Dunia telah belajar bahwa polling log pada jadwal dengan cronpekerjaan, atau bahkan logrotatedaemon, 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.