Jawaban ini lebih tentang pertimbangan skalabilitas - jika jumlah pekerja bisa tinggi dan / atau banyak dari mereka dapat menghasilkan kayu pada tingkat tinggi pada waktu yang bersamaan.
Ya, menggunakan banyak file log secara bersamaan adalah praktik yang baik.
Mencoba untuk menggabungkan ke dalam logfile log tunggal dari beberapa pekerja secara real time akan menimbulkan masalah:
- menggunakan mekanisme pemblokiran untuk mencegah hilangnya pesan akan memperlambat pekerja
- pesan log dapat muncul tidak sesuai dalam file log gabungan
- fasilitas logging terpusat yang menggabungkan log dapat kelebihan beban karena kecepatan tulis yang terbatas, pesan akan hilang
Sharding logfiles (menggunakan beberapa logfiles aktif dalam waktu yang bersamaan) itu sendiri merupakan teknik yang digunakan oleh beberapa penyedia hosting yang menawarkan layanan logging terpusat dengan kinerja tinggi dan scalable. Misalnya, ketika mengekspor log ke file, Google StackDriver Logging menghasilkan banyak file log berjumbai. Dari entri Log di Google Cloud Storage :
Ketika Anda mengekspor log ke ember Cloud Storage, Stackdriver Logging menulis satu set file ke ember. File-file tersebut diatur dalam hierarki direktori berdasarkan jenis dan tanggal log. Jenis log bisa berupa nama sederhana syslog
atau nama gabungan
appengine.googleapis.com/request_log
. Jika log ini disimpan dalam ember bernama my-gcs-bucket
, maka direktori akan dinamai seperti dalam contoh berikut:
my-gcs-bucket/syslog/YYYY/MM/DD/
my-gcs-bucket/appengine.googleapis.com/request_log/YYYY/MM/DD/
Satu ember dapat berisi log dari beberapa jenis log.
Direktori daun ( DD/
) berisi banyak file, yang masing-masing menyimpan entri log yang diekspor untuk jangka waktu yang ditentukan dalam nama file. File-file tersebut sharded dan namanya berakhir dengan nomor shard,
Sn
atau An
(n = 0, 1, 2, ...). Misalnya, berikut adalah dua file yang mungkin disimpan dalam directory
my-gcs-bucket/syslog/2015/01/13/
:
08:00:00_08:59:59_S0.json
08:00:00_08:59:59_S1.json
Kedua file ini bersama-sama berisi syslog
entri log untuk semua instance selama jam mulai 0800 UTC. Untuk mendapatkan semua entri log, Anda harus membaca semua pecahan untuk setiap periode waktu — dalam hal ini, pecahan file 0 dan 1. Jumlah pecahan file yang ditulis dapat berubah untuk setiap periode waktu tergantung pada volume entri log.
Layanan logging berkinerja tinggi seperti itu juga dapat menawarkan alternatif untuk masuk ke file, sehingga manajemen file log dapat dihindari sama sekali jika itu menarik:
Akhirnya - jika penggabungan logfile real-time bukan keharusan memiliki banyak logfile dapat membantu dengan manajemen log offline:
- mudah untuk menyusun cadangan log progresif, kompresi, pengarsipan dan skema pembuangan akhirnya
- pemrosesan paralel beberapa set log (logfiles) dimungkinkan, mengurangi / menghindari efek bottleneck
- tidak diperlukan pemisahan file dan penulisan ulang