İçeriğe geç

Projeler 2025 yayında

LogMerge

Çok sayıda büyük günlük dosyasını ve arşivi tek bir zaman sıralı akışta birleştirir; çok çekirdekli makinelerde yüksek işleme hızı için tasarlandı.

Go

Web sitesiKaynak kod

Dağıtık bir iş, hikâyesini bir düzine dosyaya dağıtır: sürücü günlükleri, yürütücü günlükleri, yan hizmetler, döndürülmüş dosyalar ve .gz arşivleri. LogMerge hepsini bir anda okur ve her satırı zaman damgası sırasında, hangi dosyadan geldiği belli, yığın izleri onları üreten satırın altında kalacak şekilde yazar — M1 Max üzerinde diskten saniyede yaklaşık 1 GB.

Keşif, ön yükleme, min-heap üzerinde birleştirme, biçimleme ve yazma

Bütün numara, açık her dosya için bir girdisi olan ve sıradaki satırın zaman damgasıyla sıralanan bir min-heap: en erken olanı çek, sıradaki satırı yığını geçene kadar akıt, geri koy. Dosya başına bir goroutine ilk zaman damgasını ayrıştırır; birleştirme dolu bir yığınla başlar. Arşivler yerinde okunur, içindeki bir girdi arsiv.tar.gz!/ad.log diye adreslenir. Farklı biçimlerdeki zaman damgaları — ISO 8601, ctime, tarih-saat-milisaniye — tek genişlikte çıkar; satır başına hiçbir şey ayrılmaz.

Go ile yazıldı, çalışma zamanı bağımlılığı yok; Linux, macOS ve Windows için iki mimaride de ikili dosya olarak, profil güdümlü eniyilemeyle derlenmiş halde yayımlanıyor.