Neden çoğu günlük dosyası ikili formattan çok düz metin kullanıyor?


81

Günlük kaydı yapılması gereken, ancak (nispeten) nadiren kullanılan bir şeydir. Bu nedenle depolama açısından daha kompakt hale getirilebilir.

Örneğin, en çok ip, tarih, saat ve tamsayı olarak gösterilebilecek diğer veriler gibi günlüğe kaydedilen veriler metin olarak saklanır.

Günlük kaydı ikili veri olarak depolandıysa, çok fazla alan korunabilir, bu nedenle daha az dönüş ve artan disk ömrü, özellikle de yazma işleminin sınırlı olduğu SSD'ler ile korunabilir.

Bazıları bunun gerçekten önemli olmadığı kadar küçük bir mesele olduğunu söyleyebilir, ancak böyle bir mekanizma inşa etmek için gereken çabayı göz önüne alarak anlamamakta mantıklı değil. Herkes boş zamanlarında iki gün gibi yapabilir, neden insanlar bunu yapmıyor?


20
İnsanların bunu yapmadığı iddiasına meydan okurdum . Bir çoğu var. Bazıları elbette değil, ama çok var.
Servi


44
> Günlük kaydı ikili veri olarak depolandıysa, çok fazla alan korunabilir. Peki, eski günlükler genellikle sıkıştırılır.
leonbloy

89
Yarısı kesik bir makinede bir metin günlüğü okumak, onu analiz etmek için bir ikiliye ihtiyaç duymaktan çok büyük bir avantaj olabilir.
to to

23
Algoritmanın büyük bir kümede düzgün bir şekilde yürütülebilmesi için aylarca yapılan değişikliklerden sonra, hala bir performans artışı göremedik, ancak günlük dosyalarını ikili dosyalarda depolamak için değiştiğimizde? İnek, performansın o seviyede olabileceğini hayal etmeye cesaret edemedik. Bu tür bir hikaye ne kadar makul?
boş

Yanıtlar:


163

systemdünlü günlük dosyalarını ikili biçimde saklar. Bununla duyduğum ana konular:

  1. Eğer kütük bozulursa, uzmanlık gerektiren aletler gerektirdiğinden kurtarılması zordur
  2. Eğer gibi standart araçlar kullanamaz yüzden, okunabilir insan değil vi, grep, tailvb bunları analiz etmek

İkili format kullanmanın ana nedeni (benim bildiğim kadarıyla), indeksler yaratmanın, örneğin bir veritabanı dosyası gibi ele almanın daha kolay olduğu düşünülüyordu.

Disk alanı avantajının pratikte nispeten küçük (ve azalan) olduğunu iddia ediyorum. Büyük miktarda kütüğü saklamak istiyorsanız, o zaman haddelenmiş kütükleri sıkıştırmak gerçekten oldukça verimlidir.

Dengede, takım ve aşinalık avantajları büyük olasılıkla çoğu durumda metin kaydı tarafına düşecektir.


3
İyi bir nokta. Ben de hemen sistemdimi düşünüyordum. Buradaki en önemli kısım, uygulamanızın günlük verilerinin nasıl depolandığını bilmek zorunda olmamasıdır . Sistem servisi olarak sağlanabilir.
5gon12eder

97
"ünlü", daha çok "rezil" gibi
whatsisname 4:16 '

4
pf (firewall) ayrıca özellikle tcpdump biçiminde ikili olarak giriş yapar
Neil McGuigan

3
@Hatshepsut Haddelenmiş günlükler: günlük çıktısı bir dosyaya yazar, myapp.loggece yarısına kadar söyler ve sonra o dosyayı taşır myapp.log.1ve yeni bir myapp.logdosyaya yazmaya başlar . Ve yaşlılar myapp.log.1taşınır myapp.log.2ve böyle devam ederler. Böylece, myapp.logher zaman güncel olanıdır. Veya belirli bir boyuta ulaşıldığında değişebilirler. Belki de tarih / saati dosya adına koymuşlardır. Birçok kayıt çerçevesi bu tür şeyleri kutunun dışında destekler.
SusanW

13
@Hatshepsut Terim rotatingayrıca bildiklerimden de kullanılıyor.
George D

89

Neden çoğu günlük dosyası ikili formattan çok düz metin kullanıyor?

Unix felsefesi Wikipedia makalesinde "metin" kelimesini aratın , örneğin:

Bell Labs CSRC (Bilgi İşlem Bilimleri Araştırma Merkezi) başkanı ve Unix borusunun mucidi McIlroy, [9], Unix felsefesini şu şekilde özetledi: [10]

Bu Unix felsefesidir: Bir şeyi yapan ve iyi yapan programlar yazın. Birlikte çalışmak için programlar yazın. Metin akışlarını işlemek için programlar yazın, çünkü bu evrensel bir arayüzdür.

Veya, örneğin, Unix Felsefesinin Temellerinden ,

Kompozisyon Kuralı: Diğer programlarla bağlantılı tasarım programları.

Programlarınızın hiçbiri birbiriyle konuşamıyorsa, karmaşık olan tek parçaların programlanmasından kaçınmak zor.

Unix geleneği, basit, metinsel, akış odaklı, aygıttan bağımsız biçimleri okuyan ve yazan programları yazmayı kuvvetle teşvik eder. Klasik Unix'te, olabildiğince çok sayıda program basit filtreler olarak yazılır, bunlar girdi üzerinde basit bir metin akışını alır ve çıktıdaki basit bir metin akışına işler.

Popüler mitolojiye rağmen, Unix programcılarının grafiksel kullanıcı arayüzlerinden nefret ettiği için bu uygulama tercih edilmez. Çünkü, basit metin akışlarını kabul eden ve yayan programlar yazmazsanız, programları birbirine bağlamak çok daha zordur.

Metin akışları, nesnelere yönelik bir ayardaki nesnelere olduğu gibi, Unix araçlarına yöneliktir. Metin akışı arayüzünün basitliği, araçların kapsüllenmesini zorlar. Uzaktan prosedür çağrıları gibi daha ayrıntılı süreçler arası iletişim biçimleri, programların birbirlerinin içindekilerine çok fazla dahil olma eğilimi göstermektedir.

Herkes boş zamanlarında iki gün gibi yapabilir, neden insanlar bunu yapmıyor?

Günlük dosyasını ikili dosyada saklamak sadece başlangıçtır (ve önemsizdir). Daha sonra aşağıdakilere araçlar yazmanız gerekir:

  • Tüm günlük dosyasını görüntüle ( edit)
  • Günlük başlangıcını okumadan günlüğün sonunu göster ( tail -f)
  • Dosyadaki öğeleri ara ( grep)
  • Yalnızca seçilen / ilginç şeyleri görüntülemek için filtreleyin (rastgele karmaşık bir filtre ifadesi kullanarak)
  • Günlüğü, günlük dosyası-kod çözücü yazılımına sahip olmayan bir başkasına e-postayla gönderin.
  • Günlük dosyasının bir parçasını kopyalayıp yapıştırın
  • Program (günlük dosyasını oluşturan) hala geliştiriliyor ve hata ayıklanıyorken günlük dosyasını okuyun.
  • Yazılımın eski sürümlerinden (müşteri sitelerinde dağıtılan ve çalışan) günlük dosyalarını okuyun.

Açıkçası, yazılım ikili dosya formatlarını da kullanabilir ve kullanır (örneğin ilişkisel veritabanları için) ancak günlük dosyaları için genellikle yapmaya değmeyecek ( YAGNI anlamında) buna değmez.


24
Belgeleri unutma! Birkaç yıl önce bir sistem için bir ikili mesaj kaydedici yazdım; bu, gelen regresyon / tekrarlama taleplerini kaydetti. Şimdi, bu berbat dosyaları anlamanın tek yolu, onları okuyan / yazan koda bakmak ve diğer takımlar bunları kullanıyor ve onlar hakkında sorular soruyor. Korkunç şeyler.
SusanW

2
Dürüst olmak gerekirse, günlüğünüzü okumak için temel sorgu araçlarıyla birlikte bir SQLite DB'sinde saklamak kutudan bahsettiğiniz tüm özellikleri sağlayacaktır. ;)
jpmc26

3
@ jpmc26 Evet, günlük dosyasını bir şekilde metin biçimine dönüştürebildiğiniz sürece okuyabilirsiniz ...
ChrisW

1
Diğer yorumlarda belirtildiği gibi: metin dosyaları kolay ve verimli bir şekilde sıkıştırılabilir. Ancak sıkıştırmanın 'veride' olması gerekmez. Sıkıştırma dosya sisteminde yapılabilir. Böylece düz metni tüm araçlar için kullanabilirsiniz ve boş disk alanı kalmaz.
Bernd Wilke

2
@ JefréN. tail -fÇok gigabaytlık bir günlük dosyasında çalışırsam , dosyanın sonuna atlar ('okuma' olmadan 'seek' kullanarak) ve sonra dosyanın sonunu okur ve görüntüler. Tüm dosyayı açmak / kodunu çözmek gerekmez.
ChrisW,

49

Burada birçok tartışılabilir varsayım var.

Kayıt yapmak, sahip olduğum her işin (neredeyse) ayrılmaz bir parçası oldu. Başvurularınızın sağlığı ile ilgili herhangi bir görünürlük istiyorsanız, bu çok önemlidir. Bir "saçak" kullanımı olduğundan şüpheliyim; Katıldığım çoğu kuruluş günlükleri çok önemli görüyor.

Günlükleri ikili olarak saklamak, okumadan önce kodunu çözmeniz gerektiği anlamına gelir. Metin kütükleri basitlik ve kullanım kolaylığına sahiptir. İkili güzergahı düşünürseniz, günlükleri sorgulayabileceğiniz ve istatistiksel olarak analiz edebileceğiniz bir veritabanında saklayabilirsiniz.

SSD'ler, bugünlerde HDD’lerden daha güvenilirdir ve birçok yazma işlemine ilişkin argümanlar büyük ölçüde tartışmalıdır. Gerçekten endişeleniyorsanız, günlüklerinizi normal bir HDD’de saklayın.


19
"günlükleri, sorgulayabileceğiniz ve istatistiksel olarak analiz edebileceğiniz bir veritabanında saklayabilirsiniz." Daha önceki bir işte, (metin tabanlı) günlüklerimizi tam da bu amaçla bir veritabanına aktaran özel bir aracımız vardı.
Mason Wheeler

5
OP'nin "SSD'nin sınırlı olduğu yerde" ile ne ifade ettiğini düşünüyorum, SSD'de sınırlı bir yazma / silme döngüsü olması ve bir sektöre çok fazla yazı yazması cihazın hizmet ömrünü azalttığı gerçeğidir. Yazarların kaybolduğu anlamına gelmiyordu.
Tulains Córdova

4
@ TulainsCórdova: Evet, ne demek istediğini biliyordum.
Robert Harvey

2
@DocSalvager: Aksini iddia etmedim.
Robert Harvey,

2
@ TulainsCórdova - SSD yazma çevrimlerinin sınırları bu günlerde genellikle çok yüksektir. Düşük maliyetli tüketici sınıfı SSD'lerde bile, cihazın yüzlerce katına denk gelen yazma döngüleri ve cihazın kapasitesini binlerce kez yazmanız için sizi kapsayacak MTBF'ler vardır. Ticari bir ortamda, çok daha büyük yazma döngüsü sınırları olan daha yüksek uçlu cihazlar kullanmalı ve bunları günde en az 5 yıllık bir döngüde değiştirmelisiniz; Endişelenecek bir şey var.
Jules

36

Günlük dosyaları, ciddi bir uygulamanın kritik bir parçasıdır: Uygulamadaki günlük kaydı iyi ise, o zaman hangi önemli olayların gerçekleştiğini görmenize izin verir; hangi hatalar oldu; ve hangi izlemede tasarlandığının ötesine geçen genel uygulama sağlığı. Bir sorun hakkında duymak, uygulamanın yerleşik teşhislerini kontrol etmek (web konsolunu açmak veya JMX gibi bir teşhis aracı kullanmak) ve ardından kontrol etmek için başvurmak yaygındır. log dosyaları.

Metin olmayan bir format kullanırsanız, hemen bir engelle karşı karşıya kalırsınız: ikili günlükleri nasıl okursunuz? Üretim sunucularınızda olmayan log okuma aracı ile! Ya da öyle, ama ah canım, yeni bir alan ekledik ve bu eski okuyucu. Bunu test etmedik mi? Evet, ama kimse burada konuşlandırmadı. Bu arada, ekranınız sizi ping yapan kullanıcılar ile aydınlatmaya başlıyor.

Belki de bu sizin uygulamanız değildir, ancak destek yapıyorsunuz ve bunun başka bir sistem olduğunu biliyorsunuz ve WTF? Günlükler ikili biçimdedir. Tamam, wiki sayfalarını okumaya başlayın ve nereden başlıyorsunuz? Şimdi onları yerel makineme kopyaladım, ama - bozuk mu? Bir tür ikili olmayan transfer yaptım mı? Yoksa günlük okuma aracı berbat mı oluyor?

Kısacası, metin okuma araçları platformlar arası ve her yerde bulunur ve günlükler genellikle uzun ömürlüdür ve bazen aceleyle okunmaları gerekir . İkili bir format icat ederseniz, iyi anlaşılmış ve kullanımı kolay araçların dünyasından kesilirsiniz. Sadece ihtiyacınız olduğunda ciddi işlevsellik kaybı.

Günlüğe kaydetme ortamlarının çoğu bir uzlaşmaya yol açar: mevcut günlükleri okunabilir ve hazır tutar ve eskilerini sıkıştırır. Bu, sıkıştırma işleminden faydalanacağınız anlamına gelir - daha doğrusu, çünkü, ikili bir biçim günlük iletilerini küçültmez. Aynı zamanda, kullanabileceğiniz daha az ve grep benzeri ve.

Peki, ikili kullanmanın ne gibi yararları olabilir? Az miktarda alan verimliliği - giderek önemsiz. Daha az (veya daha küçük) yazar mı? Eh, belki - aslında, yazma sayısı disk-komisyon sayısıyla ilişkili olacaktır, bu nedenle log-satırları disk blok boyutundan önemli ölçüde daha küçükse, SSD yine de yeni bloklar atayacaktır. Yani, eğer ikili ise uygun bir seçimdir:

  • çok miktarda yapılandırılmış veri yazıyorsunuz
  • kütükler özellikle hızlı bir şekilde oluşturulmalıdır
  • Onları "destek koşulları" altında analiz etmeniz gerekmez.

ancak bu uygulama günlüğüne daha az benziyor; bunlar çıktı dosyaları veya etkinlik kayıtlarıdır. Bunları bir dosyaya koymak muhtemelen bir veritabanına yazmaktan sadece bir adım uzaklıktadır.

DÜZENLE

Burada "program günlükleri" (günlük kaydı çerçevelerine göre) vs "kayıtlar" (erişim günlüklerinde, giriş kayıtlarında olduğu gibi) arasında genel bir karışıklık olduğunu düşünüyorum. Sorunun ikincisiyle en yakından ilgili olduğundan şüpheliyim ve bu durumda konu çok daha az iyi tanımlanmış. Bir mesaj kaydı veya etkinlik kaydının kompakt bir formatta olması, özellikle sorun giderme yerine iyi tanımlanmış ve analiz için kullanılması muhtemel olduğu için kabul edilebilir. Bunu yapan araçlar tcpdumpve Unix sistem monitörü sar. Öte yandan, program kayıtları çok daha fazla geçici olma eğilimindedir.


1
Unix /var/log/utmp/ wtmp bile ikilidir . Şu anda hangi tty'de oturum açmış olduklarını kaydettiler (böylece sadece büyümezler), ancak bir kayıt şeklidir. (Bunları ucuz bir şekilde ayrıştırabilmeniz yararlıdır, çünkü whobunun gibi çeşitli ortak komutlar bunu yapar.)
Peter Cordes

1
@PeterCordes Çok doğru. Yine, iyi tanımlanmış veri. yapılandırılmış kayıtlar. Ve elbette, tüm ölçeklerdeki hız ve boyut o günlerde hayati öneme sahipti.
SusanW

9

Biraz ikili bir günlük örneği geniş yayılır: Windows olay günlüğü. Profesyonel tarafta bu, günlük mesajlarının neredeyse hiç bir ücret ödemeden, muhtemelen gibi

Uyarı: Yapılması gereken foobarlar kuyruğu, son 90 saniyede 517 madde artmıştır. Bu günde yaklaşık bir kez olursa, endişelenecek bir şey yoktur. Daha sık veya hızlı bir şekilde art arda gerçekleşirse, foobar uygulamasının kullanabileceği RAM miktarını kontrol etmek isteyebilirsiniz. Bununla birlikte, olay 12345 ile birlikte gerçekleşirse, eski bir veritabanı kullanıyor gibi görünüyorsunuz ve veri kaybını önlemek için + 1-555-12345 numaralı telefondan daha iyi destek alabilirsiniz.

Bu iletinin ana kısmı, uygulamayla birlikte yüklenen kaynak olarak yalnızca bir kez bulunur. Bununla birlikte, bu kaynak doğru yüklenmemişse (örneğin, bu arada artık kullanılmayan bir mesajı desteklemeyen daha yeni bir sürüm yüklendiğinden), olay günlüğünde gördüğünüz tek şey, yalnızca fantezi ifadeler için standart bir mesajdır.

Dunno, "517" ve "90" olan bir şey.

ve artık hiçbir şekilde yardımcı olmuyor.


9
Windows olay günlüğünde bir şey bulmak bir kabus olabilir söz değil . Beni kesinlikle basit bir metin dosyası için uzun yapar.
Michael Hampton,

4
Bekle. Aynı anda iki (veya daha fazla) günlük girişi görmek ister miydiniz ? Çok kötü.
Eric Towers

2
Cevabım "Windows olay günlükleri, yeterince söyledi." Olacaktı.
Craig

Olay Görüntüleyicisi için eksik olan kaynaklar hakkındaki deneyimim, yüklenecek kaynaklara sahip olmayan araçlarla olmuştur , ancak bu durumda, AFAIR, raporlama programından, altta, Windows bittikten sonra hala bir bilgi satırı var. kaynak eksik veya bozuk "spiel.
underscore_d

5

Metin ve ikili arasında seçim yapmadan önce sormak isteyeceğiniz iki ana soru şunlardır:

  • İzleyicilerim kim?
  • Hangi içeriği iletmem gerekiyor?

Ortak bir görüş, bir log mesajının izleyicisinin bir insan olduğu yönündedir. Bu açıkçası mükemmel bir varsayım değil, çünkü dışarıda çok sayıda günlük tarama komut dosyası var, ancak yaygın bir durum. Bu durumda, bilgiyi insanların rahat edeceği bir ortamda iletmek mantıklıdır. Metin, bu araç olma uzun zamandır devam eden bir geleneğe sahiptir.

İçeriğe gelince, bir ikili günlüğün iyi tanımlanmış bir biçime sahip olması gerektiğini düşünün . Format, diğer kişilerin bu kayıtlarda çalışan yazılımları yazabilecek kadar iyi tanımlanmış olmalıdır. Bazı günlükler oldukça iyi yapılandırılmıştır (sorunuz birkaç tane listeler). Diğer kütüklerin, içeriği daha az tanımlanmış bir doğal dil biçiminde aktarabilmesi gerekir. Bu tür doğal dil davaları, ikili formatlar için zayıf bir eşleşmedir.

İkili olarak iyi tanımlanabilen günlükler için, bir seçim yapmalısınız. Metin herkes için çalıştığından, genellikle varsayılan seçenek olarak görülür. Sonuçlarınızı metin olarak kaydederseniz, insanlar günlüklerinizle çalışabilir. Binlerce kez kanıtlanmıştır. İkili dosyalar daha zorlu. Sonuç olarak, geliştiricilerin basitçe metin çıktısı alması olabilir, çünkü herkes neye benzeyeceğini bilir.


5

TL; DR: Boyut gerçekten önemli değil ama kullanım kolaylığı

Her şeyden önce, kısa vadeli günlük depolama için metin ve ikili biçimlerin ilgili avantajlarını karşılaştırırken önemli bir sorundur, boyut gerçekten önemli değil. Bunun iki nedeni:

  1. Günlükleri çok iyi sıkıştıracak çok fazla gereksiz bilgi vardır: Benim deneyimime göre, orijinal dosyanın boyutunun% 5 veya daha küçük olan sıkıştırılmış günlük dosyalarının görülmesi nadir değildir. Sonuç olarak, bir metin veya ikili format kullanılması, günlüklerin uzun süre depolanması üzerinde ölçülebilir bir etkiye sahip olmamalıdır.

  2. Hangi formatı seçersek seçelim, logları uzun süreli bir depolama platformuna sıkıştıran ve gönderen bir “log files sink” uygulamıyorsak loglar hızlıca bir sunucu diskini doldurur. İkili bir format kullanmak bunu biraz yavaşlatabilir, ancak 10 faktöründeki bir değişiklik bile o kadar önemli olmaz.

Metin ve ikili günlük formatları

Unix sistemlerinin vaadi, grep , sort , join , sed ve awk gibi satırlar halinde yapılandırılmış metin dosyaları üzerinde çalışan standart araç setini kullanmayı öğrenirsek, herhangi bir işi gerçekleştiren prototipleri hızlı bir şekilde bir araya getirmek için kullanabileceğiz. yavaş ve kabaca olsa da istiyoruz. Prototip yararlılığını gösterdiğinde, performans kazanmak veya başka faydalı özellikler eklemek için onu gerçekten tasarlanmış bir yazılımla değiştirmeyi seçebiliriz. Bu, en azından benim düşünceme göre, Unix felsefesinin özüdür.

Başka bir deyişle, muhtemelen tedaviler ve analizler yapmamız gerekiyorsa, bugüne kadar çözemediğimiz, bu analizi kimin yapması gerektiğini bilmiyorsak, vb. İse prototiplerin kullanıldığı ve metin formatları için gereken aşamadayız. Günlükler muhtemelen en uygunudur. Tekrar tekrar küçük bir dizi iyi tanımlanmış tedavi seti yapmamız gerekirse, bu analizi yapmak için çok yıllık bir yazılım sistemi geliştirmemiz gereken bir durumdayız ve ilişkisel veritabanları gibi günlükler için ikili veya yapılandırılmış formatlar olması muhtemeldir. en uygun.

(Bir süre önce bunun hakkında bir blog yazısı yazdım .)


4

Günlük dosyaları metin biçimindedir çünkü herhangi bir metin düzenleyiciyi kullanarak veya içeriği konsol komutuyla görüntüleyerek kolayca okunabilirler.

Ancak, çok fazla veri varsa , bazı günlük dosyaları ikili biçimdedir. Örneğin, üzerinde çalıştığım ürün maksimum 15000 kayıt saklıyor. Kayıtları en az miktarda odaya koymak için ikili olarak saklanırlar. Ancak, kayıtları görüntülemek veya kullanılabilecek bir formata dönüştürmek için özel bir uygulama yazılmalıdır (örn. Elektronik tablolar).

Özet olarak, tüm günlük dosyaları metin biçiminde değildir. Metin formatı, içeriği görüntülemek için özel araçlara ihtiyaç duyulmaması avantajına sahiptir. Çok fazla veri olduğunda, dosya ikili biçimde olabilir. İkili formatta verileri okumak ve insan tarafından okunabilir bir formatta görüntülemek için bir (özel) uygulamaya ihtiyaç duyacaksınız. Daha fazla veri ikili formatta paketlenebilir. Metin formatının veya ikili formatın kullanılıp kullanılmayacağı, veri miktarına ve içeriğin görüntülenme kolaylığına dayalı bir karardır.


3

Çalışma süresi boyunca kullanılabilir bir çıkış kanalım olmayabilir gömülü sistemlerde, uygulama, günlük kaydı tarafından uygulanan hız vuruşunu karşılayamıyor veya günlük kaydı, kaydetmeye çalıştığım efekti değiştirir veya gizler. İkili verileri bir diziye veya halka arabelleğine doldurmaya ve test çalışmasının sonunda printf () yöntemine basmak veya onu ham olarak bırakmak ve okunabilir şekilde yazdırmak için tercüman yazmak için kullanılır. Her iki durumda da okunabilir verilerle bitmek istiyorum.

Daha fazla kaynağa sahip olan sistemlerde, neden optimize etmek için neyin optimize edilmesini optimize etmek için buluş programları icat edelim?


1
Benzer şekilde, 9,600 baud seri bağlantı noktası üzerinden gömülü bir cihazdan PC'ye gerçek zamanlı olarak giriş yapmaya çalışırken, taşmaları önlemek için genellikle veri sıkıştırmanız veya ikili bir format kullanmanız önerilir.
Mawg

3

Günlük dosyaları, sorunların hata ayıklamasını sağlamaya yöneliktir. Genellikle, sabit disk alanı mühendislik süresinden çok daha ucuzdur. Günlük dosyaları metin kullanır, çünkü metinle çalışmak için birçok araç vardır (örneğin tail -f). HTTP bile düz metin kullanır (ayrıca bkz . Http yerine metin yerine neden ikili dosya göndermiyoruz ).

Ek olarak, düz metinli bir kayıt sistemi geliştirmek ve çalıştığını doğrulamak, yanlış giderse hata ayıklamak daha kolay ve sistemin başarısız olması ve günlüğün bir bölümünü bozması durumunda yararlı bilgilerin kurtarılması daha kolay olur.


2
Başkası tarafından getirildiğinden beri, HTTP / 2'nin (dikkat!) İkili, iki yönlü, çok yönlü iletişimlere izin verdiğini belirtmek isterdim. Seçkinlerden hoşlanan herhangi bir geliştirici gidip onu gerçekten çabuk öğrenmeli ve daha sonra neden olmadıklarını sormalıdır.
Shaun Wilson,

3

Bozuk bir metin dosyası, bozuk bölüm etrafında hala okunabilir durumdadır. Bozuk bir ikili dosya belki geri yüklenebilir, ancak olmayabilir. Onarılabilir olsa bile, biraz daha fazla çalışma gerektirecektir. Diğer bir neden ise, ikili bir günlük formatının, "geçici bir düzeltme" (aka "tüm düzeltmelerin en kalıcısıdır") oluşturma çabası sırasında daha hızlı oluşturulacak bir şey yerine kullanılma olasılığını düşürmesidir.


2

Yazılımımızın sağlamlığını sağlamak ve korumak için birim testlerine güveniyoruz. (Kodumuzun çoğu bir sunucuda, başsız çalışır; günlük dosyalarının işlem sonrası analizi anahtar bir stratejidir.). Neredeyse uygulamamızdaki her sınıf bazı kayıtlar yapıyor. Birim testimizin önemli bir parçası, birim testi yaparken kullanılan 'sahte' kaydedicilerin kullanılmasıdır. Bir birim testi, sahte bir kayıt cihazı oluşturur ve test edilen öğeye sağlar. Daha sonra (faydalı / uygun olduğunda) ne kaydedildiğini analiz eder (özellikle hatalar ve uyarılar). Metin tabanlı bir günlük formatı kullanmak, 'gerçek' günlüklerde yapılan analizlerle aynı nedenlerden ötürü bunu daha da kolaylaştırır: Hizmetinizde olan ve kullanımı hızlı olan daha fazla araç var.


2
Başkası düşürülmese de, bu tür bir cevabın hala değer sağladığını belirtmek isterim, ancak metin tabanlı günlüklerin ortalama programcınızın gerçekten umursamadığı şekilde uygulamanın en kötü seviyelerinde bile kullanışlı olabileceğini göstermektedir. meli. +1
Shaun Wilson

Destek yorumu için teşekkür ederiz. En azından bazı insanlar için faydalı olacağını düşündüğüm bilgileri vermeye çalışıyorum. SO'ya gittiğimde istediğim ve beklediğim bu.
Sanat Swri

2

Tarihsel olarak, Logs resmi, elle yazılmış ve olayların sıralı kayıtlarıydı. Makine olayları kaydetme yeteneğine sahip olduğunda, bunlar kalıcı bir sıralı kayıt üreten, ancak yalnızca metni işleyebilen ve bazen de BELL çalan bir teletype yazıcı gibi basılı kopya cihazına yazılmıştır ...


2

Ana bilgisayar günlerime dönüşte, özel olarak tasarlanmış bir ikili günlük biçimi kullandık. Asıl sebep yer kazanmak değil, eski girişleri yenileriyle değiştirerek kütüğün sınırlı yer kaplamasını istiyoruz; İstediğimiz son şey, disklerin dolmasından kaynaklanan sorunları teşhis edememekti (1980’de disk alanı 1000 dolara mal oldu, bu yüzden insanlar ihtiyaç duyduklarından daha fazla satın almadılar).

Şimdi hala dairesel bir günlük dosyası fikrini seviyorum ve eğer işletim sistemleri böyle bir canavar sunuyorsa, hiç tereddüt etmeden kullanırdım. Ancak ikili, kötü bir fikirdi. Gerçekten, çözmek için kritik bir probleminiz olduğunda bir günlük dosyasını deşifre etmek için doğru komutları bulmak için zaman harcamak istemezsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.