Dan Bernstein multilog tampaknya dapat melakukan hal ini - atau mungkin sebagian besar, sementara menyediakan outlet melalui file descriptor untuk prosesor! Untuk membuat perbedaan yang Anda suka - meskipun 20M / 1G spesifikasi ukuran mungkin mengambil beberapa finagling karena tampaknya 16M adalah yang batas luar per log. Berikut ini adalah, sebagian besar, pilihan salin + rekat dari tautan di atas, meskipun tautan juga merinci opsi lain seperti cap waktu per baris, mempertahankan [an] file lain [s] yang hanya berisi pola pencocokan baris terbaru dan lainnya .
Antarmuka
multilog script
... skrip terdiri dari sejumlah argumen. Setiap argumen menentukan satu tindakan. Tindakan dilakukan agar setiap jalur input.
Memilih garis
Setiap baris pada awalnya dipilih. Tindakan...
-pattern
... batal memilih garis jika polanya cocok dengan garis. Tindakan...
+pattern
memilih garis jika pola cocok dengan garis.
... pola adalah serangkaian bintang dan bukan bintang. Ini cocok dengan rangkaian string yang cocok dengan semua bintang dan non-bintang dalam urutan yang sama. Non-bintang cocok dengan dirinya sendiri. Bintang sebelum akhir pola cocok dengan string apa pun yang tidak menyertakan karakter berikutnya dalam pola. Bintang di akhir pola cocok dengan string apa pun.
Rotasi log secara otomatis
Jika dir dimulai dengan titik atau garis miring maka aksinya ...
dir
... menambahkan setiap baris yang dipilih ke log yang bernama dir . Jika dir tidak ada, multilog
buatlah.
Format log adalah sebagai berikut:
dir adalah direktori yang berisi beberapa file log lama, file log bernama saat ini , dan file lainnya untuk multilog
melacak tindakannya.
Setiap file log lama memiliki nama yang dimulai dengan @ , dilanjutkan dengan stempel waktu yang tepat yang menunjukkan kapan file selesai, dan diakhiri dengan salah satu kode berikut:
- .s : File ini sepenuhnya diproses dan ditulis dengan aman ke disk.
- .u : File ini sedang dibuat pada saat pemadaman. Mungkin sudah terpotong. Itu belum diproses.
Tindakan...
ssize
... mengatur ukuran file maksimum untuk tindakan dir berikutnya .multilog
akan memutuskan bahwa arus cukup besar jika arus memiliki ukuran byte. ( multilog
juga akan memutuskan bahwa saat ini cukup besar jika melihat baris baru dalam 2000 byte dari ukuran file maksimum; ia mencoba menyelesaikan file log pada batas garis.) ukuran harus antara 4096 dan 16777215. Ukuran file maksimum default adalah 99999.
Dalam versi 0.75 dan di atasnya: Jika multilog
menerima sinyal ALRM , ia segera memutuskan bahwa arus cukup besar, jika arus tidak kosong.
(Catatan: Saya menduga zsh
schedule
builtin dapat dengan mudah dibujuk untuk mengirim ALRM
pada interval yang ditentukan jika perlu.)
Tindakan...
nnum
... mengatur jumlah file log untuk tindakan dir berikutnya . Setelah mengganti nama saat ini , jikamultilog
melihat num atau lebih file log lama, itu menghapus file log lama dengan cap waktu terkecil. num harus minimal 2. Jumlah default file log adalah 10.
Tindakan...
!processor
... mengatur prosesor untuk tindakan dir berikutnya . multilog
akan memberi makan arus melalui prosesor dan menyimpan output sebagai file log lama, bukan saat ini . multilog
juga akan menyimpan output apa pun yang ditulis prosesor ke deskriptor 5, dan membuat output tersebut dapat dibaca pada deskriptor 4 saat menjalankan prosesor pada file log berikutnya. Untuk keandalan, prosesor harus keluar dari nol jika mengalami kesulitan dalam membuat outputnya; multilog
kemudian akan menjalankannya lagi. Perhatikan bahwa prosesor yang berjalan dapat memblokir input program apa pun multilog
.