Yapılandırılmış yaklaşımla, metin girişleri kullanılarak (bazen aşırı düzeyde) ek çaba gösterilmeksizin taklit edilemeyen iki temel gelişme vardır .
Etkinlik Türleri
Log4net ile iki olay yazdığınızda :
log.Debug("Disk quota {0} exceeded by user {1}", 100, "DTI-Matt");
log.Debug("Disk quota {0} exceeded by user {1}", 150, "nblumhardt");
Bunlar benzer metinler üretecek:
Disk quota 100 exceeded by user DTI-Matt
Disk quota 150 exceeded by user nblumhardt
Ancak, makine işleme söz konusu olduğunda, bunlar sadece iki satır farklı metindir.
Tüm "disk kotası aşıldı" olaylarını bulmak isteyebilirsiniz, ancak olayları aramanın basit olayı, like 'Disk quota%'
başka bir olay olduğu gibi gerçekleşir görünmez düşecektir:
Disk quota 100 set for user DTI-Matt
Metin kaydı, başlangıçta etkinliğin kaynağı hakkında sahip olduğumuz bilgileri atar ve bu genellikle günlükleri daha fazla ve daha ayrıntılı eşleştirme ifadeleriyle okurken yeniden oluşturulmalıdır.
Buna karşılık, aşağıdaki iki Serilog olayını yazdığınızda :
log.Debug("Disk quota {Quota} exceeded by user {Username}", 100, "DTI-Matt");
log.Debug("Disk quota {Quota} exceeded by user {Username}", 150, "nblumhardt");
Bunlar log4net sürümüne benzer metin çıktısı üretir, ancak sahne arkasında "Disk quota {Quota} exceeded by user {Username}"
mesaj şablonu her iki olay tarafından da taşınır.
Uygun bir havuz ile sorguları daha sonra yazabilir where MessageTemplate = 'Disk quota {Quota} exceeded by user {Username}'
ve disk kotasının aşıldığı olayları tam olarak alabilirsiniz .
Tüm mesaj şablonunu her log olayı ile birlikte saklamak her zaman uygun değildir, bu nedenle bazı mesajlar mesaj şablonunu sayısal bir EventType
değere sahiptir (örneğin 0x1234abcd
), ya da bunu kendiniz yapmak için günlük boru hattına bir zenginleştirici ekleyebilirsiniz .
Aşağıdaki bir sonraki farktan daha ince, ancak büyük kütük hacimleriyle uğraşırken çok güçlü bir fark.
Yapılandırılmış Veriler
Yine disk alanı kullanımıyla ilgili iki olayı göz önüne alarak, belirli bir kullanıcıyı sorgulamak için metin kayıtlarını kullanmak yeterince kolay olabilir like 'Disk quota' and like 'DTI-Matt'
.
Ancak, üretim teşhisi her zaman kolay değildir. Disk kotasının aşıldığı olayların 125 MB'ın altında olduğunu bulmak için gerekli olduğunu hayal edin?
Serilog ile bu, bir çeşidi kullanan çoğu lavaboda mümkündür:
Quota < 125
Düzenli ifadeden sorgunun bu tür Oluşturma olan olası, ancak yorucu hızlı olur ve genellikle son çare olarak biter.
Şimdi buna bir etkinlik türü ekleyin:
Quota < 125 and EventType = 0x1234abcd
Burada üretimin hata ayıklamasını birinci sınıf geliştirme faaliyeti gibi hissettirmek için bu özelliklerin basit bir şekilde nasıl birleştiğini görmeye başlarsınız.
Bir başka avantaj, belki de öne geçmek için kolay değildir, ancak üretim hata ayıklaması regex korsanlığı ülkesinden kaldırıldıktan sonra, geliştiriciler günlükleri çok daha fazla değerlendiriyor ve yazarken daha fazla özen ve dikkat göstermeye başlıyor. Daha iyi günlükler -> daha kaliteli uygulamalar -> her yerde daha fazla mutluluk.