Mengapa sebagian besar file log menggunakan teks biasa daripada format biner?

81

Penebangan adalah sesuatu yang perlu tetapi jarang digunakan. Karena itu dapat dibuat jauh lebih kompak dalam hal penyimpanan.

Misalnya data yang paling umum dicatat seperti ip, tanggal, waktu dan data lain yang dapat direpresentasikan sebagai bilangan bulat sedang disimpan sebagai teks.

Jika logging disimpan sebagai data biner, banyak ruang dapat dipertahankan sehingga membutuhkan lebih sedikit rotasi dan meningkatkan masa pakai disk, terutama dengan SSD di mana penulisan terbatas.

Beberapa orang mungkin mengatakan bahwa ini adalah masalah kecil sehingga tidak terlalu penting, tetapi dengan mempertimbangkan upaya yang diperlukan untuk membangun mekanisme seperti itu, tidak masuk akal untuk tidak melakukannya. Siapa pun dapat membuat ini selama dua hari di waktu luangnya, mengapa orang tidak melakukannya?

php_nub_qq
sumber
20
Saya akan menantang pernyataan Anda bahwa orang tidak melakukan ini. Banyak yang melakukannya. Beberapa tidak, tentu, tetapi banyak yang melakukannya.
Servy
44
> Jika logging disimpan sebagai data biner, banyak ruang dapat dipertahankan Yah, log lama biasanya dikompresi.
leonbloy
89
Membaca log teks pada mesin yang setengah rusak mungkin merupakan keuntungan besar jika membutuhkan biner untuk menganalisanya.
tofro
23
Setelah berbulan-bulan modifikasi untuk menjalankan algoritma pada cluster besar dengan benar, kami masih tidak dapat melihat banyak peningkatan kinerja, tetapi ketika kami berubah untuk menyimpan file log dalam file biner? Astaga, kami tidak pernah berani bermimpi bahwa penampilannya bisa setingkat itu. Seberapa masuk akalkah kisah seperti itu?
null

Jawaban:

163

systemdterkenal menyimpan file log-nya dalam format biner. Masalah utama yang saya dengar dengan itu adalah:

  1. jika log rusak maka sulit dipulihkan karena membutuhkan perkakas khusus
  2. mereka tidak dapat dibaca manusia, sehingga Anda tidak dapat menggunakan alat standar seperti vi, grep, taildll untuk menganalisis mereka

Alasan utama untuk menggunakan format biner (setahu saya) adalah karena itu dianggap lebih mudah untuk membuat indeks dll yaitu memperlakukannya lebih seperti file database.

Saya berpendapat bahwa keunggulan ruang disk relatif kecil (dan berkurang) dalam praktiknya. Jika Anda ingin menyimpan logging dalam jumlah besar, maka zipping log yang digulung benar-benar cukup efisien.

Pada keseimbangan, keuntungan dari tooling dan keakraban mungkin akan keliru di sisi pencatatan teks dalam banyak kasus.

Alex
sumber
3
Poin bagus. Saya segera memikirkan systemd juga. Bagian yang lebih penting di sini adalah aplikasi Anda tidak perlu tahu bagaimana data log disimpan. Ini dapat diberikan sebagai layanan sistem.
5gon12eder
97
"terkenal", lebih seperti "terkenal"
whatsisname
4
pf (firewall) juga masuk dalam biner, khusus ke format tcpdump
Neil McGuigan
3
@Hatshepsut Rolled logs: output log menulis ke satu file, katakan myapp.loghingga tengah malam, lalu pindahkan file itu ke myapp.log.1, dan mulai menulis ke myapp.logfile baru . Dan yang lama myapp.log.1dipindahkan ke myapp.log.2, dan seterusnya, mereka semua berguling. Jadi, myapp.logselalu yang sekarang. Atau mereka dapat beralih ketika ukuran tertentu tercapai. Mungkin mereka memasukkan tanggal / waktu dalam nama file. Banyak kerangka kerja logging mendukung hal semacam ini di luar kebiasaan.
SusanW
13
@Hatshepsut Istilah rotatingini juga digunakan dari apa yang saya ketahui.
George D
89

Mengapa sebagian besar file log menggunakan teks biasa daripada format biner?

Cari kata "teks" di artikel Wikipedia filsafat Unix , misalnya Anda akan menemukan pernyataan seperti:

McIlroy, kemudian kepala Bell Labs CSRC (Computing Sciences Research Center), dan penemu pipa Unix, [9] merangkum filosofi Unix sebagai berikut: [10]

Ini adalah filosofi Unix: Menulis program yang melakukan satu hal dan melakukannya dengan baik. Menulis program untuk bekerja bersama. Menulis program untuk menangani aliran teks, karena itu adalah antarmuka universal.

Atau misalnya, dari Basics of the Unix Philosophy ,

Rule of Composition: Merancang program yang akan dihubungkan dengan program lain.

Sulit untuk menghindari pemrograman monolit yang terlalu rumit jika tidak ada program Anda yang dapat saling berbicara.

Tradisi Unix sangat mendorong program penulisan yang membaca dan menulis format sederhana, tekstual, berorientasi aliran, dan tidak tergantung pada perangkat. Di bawah Unix klasik, sebanyak mungkin program ditulis sebagai filter sederhana, yang mengambil aliran teks sederhana pada input dan memprosesnya menjadi aliran teks sederhana pada output.

Meskipun mitologi populer, praktik ini disukai bukan karena programmer Unix membenci antarmuka pengguna grafis. Itu karena jika Anda tidak menulis program yang menerima dan memancarkan aliran teks sederhana, itu jauh lebih sulit untuk menyatukan program.

Text stream adalah untuk alat Unix sebagai pesan ke objek dalam pengaturan berorientasi objek. Kesederhanaan antarmuka aliran teks memaksa enkapsulasi alat. Bentuk komunikasi antar proses yang lebih rumit, seperti panggilan prosedur jarak jauh, menunjukkan kecenderungan terlalu banyak melibatkan program dengan internal satu sama lain.

Siapa pun dapat membuat ini selama dua hari di waktu luangnya, mengapa orang tidak melakukannya?

Menyimpan file log dalam biner hanyalah awal (dan sepele). Anda kemudian perlu menulis alat untuk:

  • Tampilkan seluruh file log ( edit)
  • Tampilkan akhir log, tanpa membaca bagian awal ( tail -f)
  • Cari barang di file ( grep)
  • Filter untuk hanya menampilkan hal-hal yang dipilih / menarik (menggunakan ekspresi filter yang rumit rumit)
  • Email log ke orang lain yang tidak memiliki perangkat lunak log-file-decoder Anda
  • Salin dan tempel fragmen file log
  • Baca file log saat program (yang membuat file log) masih dikembangkan dan didebug
  • Baca file log dari versi lama perangkat lunak (yang digunakan di situs pelanggan dan berjalan).

Jelas perangkat lunak dapat dan memang menggunakan format file biner juga (misalnya untuk database relasional) tetapi tidak bermanfaat (dalam arti YAGNI ), biasanya tidak layak dilakukan, untuk file log.

ChrisW
sumber
24
Jangan lupa dokumentasi! Saya menulis perekam pesan biner untuk sistem beberapa tahun yang lalu, yang mencatat permintaan masuk untuk regresi / replay. Sekarang, satu-satunya cara untuk memahami file-file mengerikan ini adalah dengan melihat kode yang membaca / menulisnya, dan tim lain menggunakannya dan mengajukan pertanyaan tentangnya. Hal yang mengerikan.
SusanW
2
Agar adil, menyimpan log Anda dalam DB SQLite dikombinasikan dengan alat query dasar untuk membaca akan memberikan semua fitur yang Anda sebutkan di luar kotak. ;)
jpmc26
3
@ jpmc26 Ya Anda dapat membaca file log selama Anda dapat, entah bagaimana, mengubahnya menjadi format teks ...
ChrisW
1
seperti yang dikatakan dalam komentar lain: file teks dapat dikompres dengan mudah dan efisien. Namun kompresi tidak harus di 'data'. Kompresi dapat dilakukan dalam sistem file. sehingga Anda dapat menggunakan teks biasa untuk semua alat dan tidak memiliki ruang disk yang terbuang.
Bernd Wilke πφ
2
@ JefréN. Jika saya menjalankan tail -ffile log multi-gigabyte, ia melompati ke akhir file (menggunakan 'mencari' tanpa 'membaca') dan kemudian membaca-dan-hanya menampilkan akhir file. Tidak perlu mendekompresi / mendekode seluruh file.
ChrisW
49

Ada banyak anggapan yang bisa diperdebatkan di sini.

Penebangan telah menjadi bagian integral dari (hampir) setiap pekerjaan yang saya miliki. Sangat penting jika Anda ingin segala jenis visibilitas pada kesehatan aplikasi Anda. Saya ragu bahwa ini adalah penggunaan "pinggiran"; kebanyakan organisasi yang pernah saya ikuti menganggap log sangat penting.

Menyimpan log sebagai biner berarti Anda harus memecahkan kode sebelum dapat membacanya. Log teks memiliki keutamaan kesederhanaan dan kemudahan penggunaan. Jika Anda merenungkan rute biner, Anda sebaiknya menyimpan log dalam database sebagai gantinya, di mana Anda dapat menginterogasinya dan menganalisisnya secara statistik.

SSD lebih dapat diandalkan daripada HDD saat ini, dan argumen terhadap banyak penulisan sebagian besar diperdebatkan. Jika Anda benar-benar khawatir tentang hal itu, simpan log Anda pada HDD biasa.

Robert Harvey
sumber
19
"Anda mungkin juga menyimpan log dalam database, di mana Anda dapat menginterogasinya dan menganalisisnya secara statistik." Di pekerjaan sebelumnya, kami memiliki alat khusus yang mengimpor log (berbasis teks) kami ke dalam database untuk tujuan ini.
Mason Wheeler
5
Saya mengecilkan arti OP dengan _ "SSD di mana penulisan terbatas" adalah fakta bahwa dalam SSD memiliki siklus tulis / hapus yang terbatas dan terlalu banyak menulis pada sektor mengurangi masa pakai perangkat. Dia tidak bermaksud menulis yang hilang.
Tulains Córdova
4
@ TulainsCórdova: Ya, saya tahu apa yang dia maksud.
Robert Harvey
2
@ DocSalvager: Saya tidak menyatakan sebaliknya.
Robert Harvey
2
@ TulainsCórdova - batas siklus penulisan SSD umumnya sangat tinggi akhir-akhir ini. Bahkan SSD kelas konsumen yang murah memiliki jaminan pabrik pada siklus penulisan yang mencapai ratusan kali lipat ukuran perangkat, dan MTBF yang akan melindungi Anda untuk menulis ribuan kali kapasitas perangkat. Dan dalam pengaturan komersial Anda harus menggunakan perangkat akhir yang lebih tinggi yang memiliki batas siklus tulis jauh lebih besar dan harus menggantinya pada setidaknya siklus 5 tahun jadi kecuali Anda menulis> kapasitas penyimpanan 10% per hari, saya tidak berpikir ada yang perlu dikhawatirkan.
Jules
36

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 tcpdumpdan monitor sistem Unix sar. Log program di sisi lain cenderung lebih ad hoc.

SusanW
sumber
1
Bahkan Unix /var/log/utmp/ wtmp adalah biner . Mereka mencatat siapa yang saat ini login di tty mana (jadi mereka tidak hanya tumbuh), tetapi mereka adalah bentuk logging. (Dan berguna untuk menguraikannya dengan murah, karena berbagai perintah umum seperti wholakukan saja.)
Peter Cordes
1
@PeterCordes Sangat benar. Sekali lagi, data terdefinisi dengan baik. catatan terstruktur. Dan tentu saja, kecepatan dan ukuran di semua skala adalah pertimbangan vital pada masa itu.
SusanW
9

Contoh log biner agak tersebar luas: log peristiwa Windows. Di sisi pro, ini memungkinkan pesan log menjadi cukup bertele-tele (dan dengan demikian mudah-mudahan bermanfaat) dengan hampir tanpa biaya, mungkin sesuatu seperti

Peringatan: Antrian foobars untuk dilakukan telah bertambah sebanyak 517 item selama 90 detik terakhir. Jika ini terjadi sekali sehari, tidak ada yang perlu dikhawatirkan. Jika itu terjadi lebih sering atau berturut-turut cepat, Anda mungkin ingin memeriksa jumlah RAM yang tersedia untuk aplikasi foobar. Namun, jika itu terjadi bersamaan dengan peristiwa 12345, Anda tampaknya menggunakan basis data usang dan Anda sebaiknya menghubungi dukungan di + 1-555-12345 untuk mencegah kehilangan data.

Bagian utama dari pesan ini hanya ada satu kali sebagai sumber daya yang diinstal dengan aplikasi. Namun, jika sumber daya ini tidak diinstal dengan benar (misalnya, karena sementara itu versi yang lebih baru telah diinstal yang tidak lagi mendukung pesan usang ini), semua yang Anda lihat di log peristiwa adalah pesan standar yang hanya ingin dituliskan untuk

Entahlah, sesuatu dengan "517" dan "90".

dan tidak lagi membantu dengan cara apa pun.

Hagen von Eitzen
sumber
9
Belum lagi menemukan sesuatu di log peristiwa Windows bisa menjadi mimpi buruk. Itu tentu membuat saya merindukan file teks sederhana.
Michael Hampton
4
Tunggu. Apakah Anda ingin melihat dua (atau lebih) entri log secara bersamaan? Sayang sekali.
Eric Towers
2
Jawaban saya akan menjadi "log peristiwa Windows, cukup kata."
Craig
Pengalaman saya tentang sumber daya yang hilang untuk Peraga Peristiwa telah dengan alat yang tidak memiliki sumber daya untuk diinstal, tetapi dalam kasus itu, AFAIR, masih ada sederetan info aktual dari program pelaporan, di bagian bawah, setelah Windows selesai. ' sumber daya mungkin hilang atau rusak "spiel.
underscore_d
5

Dua pertanyaan utama yang ingin Anda tanyakan sebelum memilih antara teks dan biner adalah:

  • Siapa audiens saya?
  • Konten apa yang perlu saya sampaikan?

Pendapat umum adalah bahwa pemirsa pesan log adalah manusia. Ini jelas bukan asumsi yang sempurna, karena ada banyak skrip perayapan log di luar sana, tetapi itu adalah yang umum. Dalam hal ini, masuk akal untuk menyampaikan informasi dalam media yang nyaman bagi manusia. Teks memiliki tradisi lama sebagai medium ini.

Adapun konten, pertimbangkan bahwa log biner harus memiliki format yang terdefinisi dengan baik. Formatnya harus cukup jelas bagi orang lain untuk menulis perangkat lunak yang beroperasi pada log tersebut. Beberapa log terstruktur dengan cukup baik (pertanyaan Anda mencantumkan beberapa). Log lain membutuhkan kemampuan untuk menyampaikan konten dalam bentuk bahasa alami yang kurang jelas. Kasus bahasa alami semacam itu tidak cocok untuk format biner.

Untuk log yang bisa dideskripsikan dengan baik dalam biner, Anda harus membuat pilihan. Karena teks berfungsi untuk semua orang, ini sering dilihat sebagai pilihan default. Jika Anda mencatat hasil Anda dalam teks, orang-orang dapat bekerja dengan log Anda. Sudah terbukti ribuan kali. File biner lebih rumit. Akibatnya, mungkin para pengembang membuat teks hanya karena semua orang tahu seperti apa perilakunya.

Cort Ammon
sumber
5

TL; DR: Ukuran tidak terlalu penting, tetapi kenyamanan dalam menggunakannya tidak masalah

Pertama-tama, sementara membandingkan keunggulan masing-masing format teks dan biner untuk penyimpanan log jangka pendek adalah pertanyaan penting, ukurannya tidak terlalu menjadi masalah. Dua alasan untuk ini adalah:

  1. Log adalah informasi yang sangat berlebihan yang akan memampatkan dengan sangat baik: menurut pengalaman saya, tidak jarang melihat file log terkompresi yang ukurannya 5% atau kurang dari ukuran file asli. Akibatnya, menggunakan teks atau format biner seharusnya tidak memiliki dampak yang terukur pada penyimpanan lama log.

  2. Apa pun format yang kita pilih, log akan dengan cepat mengisi disk server jika kita tidak menerapkan "log files sink" yang memampatkan dan mengirim file log ke platform penyimpanan jangka panjang. Menggunakan format biner bisa memperlambat ini sedikit tetapi bahkan perubahan dengan faktor 10 tidak akan menjadi masalah banyak.

Teks versus format log biner

Janji dari sistem Unix adalah bahwa, jika kita belajar menggunakan toolset standar yang bekerja pada file teks yang terstruktur dalam garis - seperti grep , sortir , gabung , sed dan awk - kita akan dapat menggunakannya untuk dengan cepat mengumpulkan prototipe yang melakukan pekerjaan apa pun kami ingin, meskipun lambat dan kasar. Setelah prototipe menunjukkan kegunaannya, kita dapat memilih untuk mengubahnya menjadi perangkat lunak yang benar-benar dirancang untuk mendapatkan kinerja atau menambahkan fitur bermanfaat lainnya. Ini, setidaknya dalam pemahaman saya, esensi dari filosofi Unix.

Dengan kata lain, jika kita perlu melakukan perawatan dan analisis, kita tidak dapat mengetahuinya hari ini, jika kita tidak tahu siapa yang harus mengimplementasikan analisis ini, dll. Maka kita berada pada tahap di mana prototipe harus digunakan dan format teks untuk log mungkin optimal. Jika kita perlu berulang kali melakukan serangkaian kecil perawatan yang teridentifikasi dengan baik, maka kita berada dalam situasi di mana kita harus merekayasa sistem perangkat lunak abadi untuk melakukan analisis ini dan format biner atau terstruktur untuk log, seperti database relasional, kemungkinan akan menjadi optimal.

(Beberapa waktu yang lalu, saya menulis posting blog tentang ini.)

Michael Le Barbier Grünewald
sumber
4

File log dalam format teks karena mereka dapat dengan mudah dibaca menggunakan semua jenis editor teks atau dengan menampilkan konten melalui perintah konsol.

Namun, beberapa file log dalam format biner jika ada banyak data. Sebagai contoh, produk yang saya kerjakan menyimpan maksimum 15000 catatan. Untuk menyimpan catatan dalam jumlah kamar paling sedikit, mereka disimpan dalam biner. Namun, aplikasi khusus harus ditulis untuk melihat catatan atau mengonversinya menjadi format yang dapat digunakan (mis. Spreadsheet).

Singkatnya, tidak semua file log dalam format teks. Format teks memiliki keuntungan bahwa alat kustom tidak diperlukan untuk melihat konten. Di mana ada banyak data, file tersebut mungkin dalam format biner . Format biner akan membutuhkan aplikasi (khusus) untuk membaca data dan menampilkannya dalam format yang dapat dibaca manusia. Lebih banyak data dapat dikemas ke dalam format biner. Apakah akan menggunakan format teks atau format biner adalah keputusan berdasarkan jumlah data dan kemudahan melihat konten.

Thomas Matthews
sumber
3

Dalam sistem tertanam di mana saya mungkin tidak memiliki saluran output yang tersedia selama waktu berjalan, aplikasi tidak mampu membayar kecepatan yang dikenakan oleh logging, atau logging akan mengubah atau menutupi efek yang saya coba rekam, saya sudah sering terpaksa memasukkan data biner ke dalam array atau buffer cincin, dan mencetaknya pada akhir uji coba atau membuangnya mentah-mentah dan menulis penerjemah untuk mencetaknya agar dapat dibaca. Either way, saya ingin berakhir dengan data yang dapat dibaca.

Dalam sistem dengan lebih banyak sumber daya, mengapa menemukan skema untuk mengoptimalkan apa yang tidak perlu dioptimalkan?

JRobert
sumber
1
Demikian pula, ketika mencoba masuk real-time dari perangkat yang tertanam ke PC melalui port serial 9.600 baud, sering disarankan untuk mengompres data atau menggunakan format biner, untuk mencegah luapan.
Mawg
3

File log dimaksudkan untuk membantu debugging masalah. Biasanya, ruang hard drive jauh lebih murah daripada waktu rekayasa. File log menggunakan teks karena ada banyak alat untuk bekerja dengan teks (seperti tail -f). Bahkan HTTP menggunakan teks biasa (lihat juga mengapa kita tidak mengirim biner alih-alih teks pada http ).

Selain itu, lebih murah untuk mengembangkan sistem pencatatan teks biasa dan memverifikasi bahwa sistem itu berfungsi, lebih mudah untuk debug jika terjadi kesalahan, dan lebih mudah untuk memulihkan informasi yang berguna jika sistem gagal dan merusak bagian dari log.

Casey Kuball
sumber
2
Karena ini dibesarkan oleh orang lain, saya ingin menunjukkan bahwa HTTP / 2 (lihat!) Memungkinkan untuk komunikasi biner, dua arah, multipleks. Setiap pengembang yang menganggap dirinya elit harus mempelajarinya dengan cepat dan kemudian bertanya pada diri sendiri mengapa itu tidak terjadi lebih cepat.
Shaun Wilson
3

File teks yang rusak masih dapat dibaca di sekitar bagian yang rusak. File biner yang rusak mungkin dapat dipulihkan, tetapi mungkin juga tidak. Bahkan jika itu dapat dihidupkan kembali, itu akan membutuhkan sedikit lebih banyak pekerjaan. Alasan lainnya adalah bahwa format pencatatan biner membuatnya lebih kecil kemungkinannya ketika terburu-buru untuk membuat "perbaikan sementara" (alias "yang paling permanen dari semua perbaikan") solusi pencatatan akan digunakan alih-alih sesuatu yang dapat dibuat lebih cepat.

Dmitry Rubanovich
sumber
2

Kami mengandalkan pengujian unit untuk mencapai dan mempertahankan kekokohan perangkat lunak kami. (Sebagian besar kode kami berjalan di server, tanpa kepala; analisis file log pasca operasi adalah strategi utama.). Hampir setiap kelas dalam implementasi kami melakukan logging. Bagian penting dari pengujian unit kami adalah penggunaan penebang 'tiruan' yang digunakan saat pengujian unit. Tes unit membuat logger tiruan dan menyediakannya untuk item yang sedang diuji. Kemudian (bila berguna / sesuai) menganalisis apa yang dicatat (terutama kesalahan dan peringatan). Menggunakan format log berbasis teks membuat ini jauh lebih mudah karena alasan yang sama seperti analisis yang dilakukan pada log 'nyata': ada lebih banyak alat yang Anda inginkan yang cepat digunakan dan beradaptasi.

Seni Swri
sumber
2
walaupun orang lain downvoted, saya ingin menunjukkan jawaban semacam ini masih memberikan nilai, itu menunjukkan bahwa log berbasis teks dapat dibuat berguna bahkan pada tingkat terburuk praktik dalam cara yang tidak dipedulikan oleh programmer rata-rata Anda, tetapi harus. +1
Shaun Wilson
Terima kasih atas komentar dukungannya. Saya mencoba memberikan info yang menurut saya akan bermanfaat bagi setidaknya beberapa orang. Itu yang saya inginkan dan harapkan ketika saya pergi ke SO.
Seni Swri
2

Secara historis, Log adalah catatan acara resmi, tulisan tangan, dan berurutan. Ketika mesin menjadi mampu merekam peristiwa, ini ditulis ke perangkat output hard-copy seperti printer teletype, yang menghasilkan catatan sekuensial permanen tetapi yang hanya bisa memproses teks, dan kadang-kadang ...

Chris_F
sumber
2

Kembali di masa mainframe saya, kami menggunakan format log biner yang dirancang khusus. Alasan utama bukan untuk menghemat ruang, itu karena kami ingin log menempati ruang terbatas dengan menimpa entri lama dengan yang baru; hal terakhir yang kami inginkan adalah tidak dapat mendiagnosis masalah yang disebabkan oleh disk menjadi penuh (pada tahun 1980 ruang disk digunakan untuk biaya $ 1000 / Mb, sehingga orang tidak membeli lebih dari yang mereka butuhkan).

Sekarang saya masih menyukai gagasan file log bundar, dan jika sistem operasi menawarkan binatang seperti itu saya akan menggunakannya tanpa ragu-ragu. Tapi biner adalah ide yang buruk. Anda benar-benar tidak ingin membuang waktu untuk menemukan perintah yang tepat untuk menguraikan file log ketika Anda memiliki masalah kritis untuk dipecahkan.

Michael Kay
sumber