Sebagai alternatif, Anda dapat menyalurkan output melalui alat yang dirancang dengan tujuan utama mempertahankan kumpulan file log yang dibatasi ukurannya, diputar secara otomatis, seperti:
-
multilogDan Bernstein dari daemontools multilogdari Bruce Guenter dari daemontools-encore-
s6-logLaurent Bercot dari s6 -
svlogddari Gerrit Pape dari runit -
tinylogdari Wayne Marshall dari pelaku -
cyclogsaya dari nosh
Alat untuk kemudian memproses multilog -format set file log termasuk, antara lain:
-
multilog-watchdari Russ Allbery logrange-
multilog-stamptaildari Paul Kremer -
follow-log-directoriessaya dari nosh -
export-to-rsyslogsaya dari nosh
Bacaan lebih lanjut
- Jonathan de Boyne Pollard (2015). "Mencatat". Keluarga daemontools . Jawaban yang Sering Diberikan.
- Jonathan de Boyne Pollard (2016). Jangan gunakan
logrotateataunewsyslogdi abad ini. . Jawaban yang Sering Diberikan. - https://unix.stackexchange.com/a/326166/5132
rotatelogs alat dikirimkan dengan apache (dalam bin dir) (lihat dokumen) mengambil input dari stdin dan memutar log setelah beberapa waktu tertentu
Saya memiliki masalah serupa dan awalnya membuang logrotate tetapi ternyata logrotate benar-benar dapat melakukan ini dengan baik, arahan kuncinya adalah "copytruncate ". Untuk beberapa alasan istilah itu tidak muncul di googling mana pun yang saya lakukan, jadi saya menambahkan jawaban ini untuk mengklarifikasi dengan tepat bagaimana menggunakannya untuk kasus ini.
Triknya adalah ini hanya berfungsi jika pengalihan dilakukan dengan ">> " (tambahkan) alih-alih "> " (buat).
File Konfigurasi (truncate.cfg):
/tmp/temp.log {
size 10M
copytruncate
rotate 4
maxage 100
}
Uji Program (tidak pernah menyerah file). Anda dapat melihatnya mengisi disk dan meskipun menghapus file log tampaknya berfungsi, itu tidak benar-benar membebaskan ruang apa pun pada disk:
cat /dev/urandom >> /tmp/temp.log
Menjalankan rotasi log:
logrotate truncate.cfg