Sebagai alternatif, Anda dapat menyalurkan output melalui alat yang dirancang dengan tujuan utama mempertahankan kumpulan file log yang dibatasi ukurannya, diputar secara otomatis, seperti:
-
multilog
Dan Bernstein dari daemontools multilog
dari Bruce Guenter dari daemontools-encore-
s6-log
Laurent Bercot dari s6 -
svlogd
dari Gerrit Pape dari runit -
tinylog
dari Wayne Marshall dari pelaku -
cyclog
saya dari nosh
Alat untuk kemudian memproses multilog
-format set file log termasuk, antara lain:
-
multilog-watch
dari Russ Allbery logrange
-
multilog-stamptail
dari Paul Kremer -
follow-log-directories
saya dari nosh -
export-to-rsyslog
saya dari nosh
Bacaan lebih lanjut
- Jonathan de Boyne Pollard (2015). "Mencatat". Keluarga daemontools . Jawaban yang Sering Diberikan.
- Jonathan de Boyne Pollard (2016). Jangan gunakan
logrotate
ataunewsyslog
di 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