File log adalah bagian penting dari setiap aplikasi serius: jika login dalam aplikasi itu bagus, maka mereka membiarkan Anda melihat peristiwa kunci yang telah terjadi dan kapan; kesalahan apa yang terjadi; dan kesehatan aplikasi umum yang melampaui pemantauan apa pun yang telah dirancang. Biasanya mendengar masalah, memeriksa diagnostik bawaan aplikasi (buka konsol web-nya atau gunakan alat diagnostik seperti JMX), lalu gunakan untuk memeriksa file log.
Jika Anda menggunakan format non-teks, maka Anda segera dihadapkan dengan rintangan: bagaimana Anda membaca log biner? Dengan alat membaca log, yang tidak ada di server produksi Anda! Atau itu, tapi oh sayang, kami telah menambahkan bidang baru dan ini adalah pembaca lama. Bukankah kita menguji ini? Ya, tapi tidak ada yang menyebarkannya di sini. Sementara itu, layar Anda mulai menyala dengan pengguna mem-ping Anda.
Atau mungkin ini bukan aplikasi Anda, tetapi Anda sedang melakukan dukungan dan Anda pikir Anda tahu itu adalah sistem lain ini, dan WTF? log dalam format biner? Oke, mulailah membaca halaman wiki, dan dari mana Anda memulai? Sekarang saya sudah menyalinnya ke mesin lokal saya, tetapi - mereka rusak? Sudahkah saya melakukan semacam transfer non-biner? Atau apakah alat baca log kacau?
Singkatnya, alat membaca teks bersifat lintas platform dan ada di mana-mana, dan log sering kali berumur panjang dan kadang-kadang perlu dibaca dengan tergesa-gesa . Jika Anda menemukan format biner, maka Anda terputus dari seluruh dunia alat yang dimengerti dan mudah digunakan. Hilangnya fungsi serius hanya saat Anda membutuhkannya.
Sebagian besar lingkungan pencatatan mendapat kompromi: menjaga agar log saat ini dapat dibaca dan ada, dan kompres yang lama. Itu berarti Anda mendapatkan manfaat kompresi - lebih dari itu, sebenarnya, karena format biner tidak akan menyusutkan pesan log. Pada saat yang sama, Anda dapat menggunakan lebih sedikit dan grep dan sebagainya.
Jadi, manfaat apa yang mungkin muncul dari menggunakan biner? Sejumlah kecil efisiensi ruang - semakin tidak penting. Lebih sedikit (atau lebih kecil) menulis? Yah, mungkin - sebenarnya, jumlah penulisan akan berhubungan dengan jumlah disk-commit, jadi jika log-line secara signifikan lebih kecil dari ukuran disk, maka SSD akan menetapkan blok baru berulang-ulang. Jadi, biner adalah pilihan yang tepat jika:
- Anda menulis sejumlah besar data terstruktur
- log harus dibuat dengan cepat
- Anda tidak perlu menganalisisnya di bawah "kondisi dukungan"
tapi ini terdengar kurang seperti aplikasi logging; ini adalah file output atau catatan aktivitas. Menempatkan mereka di file mungkin hanya satu langkah lagi dari menulisnya ke database.
SUNTING
Saya pikir ada kebingungan umum di sini antara "log program" (sesuai kerangka kerja logging) vs "catatan" (seperti dalam log akses, catatan login dll). Saya kira pertanyaannya berkaitan paling dekat dengan yang terakhir, dan dalam hal ini masalahnya jauh lebih tidak jelas. Sangat dapat diterima untuk catatan pesan atau log aktivitas dalam format yang ringkas, terutama karena itu cenderung didefinisikan dengan baik dan digunakan untuk analisis daripada pemecahan masalah. Alat yang melakukan ini termasuk tcpdump
dan monitor sistem Unix sar
. Log program di sisi lain cenderung lebih ad hoc.