2015-08-18 24 views
9

Kayıt kitaplığının temellerini anlamak istiyorum.Bir günlük kütüphanesinin anlamı ve amacı nedir?

  1. Günlük kayıt kitaplığının amacı nedir? Bir günlüğün, uygulama sırasında uygulama işleminizle ilgili bilgiler olduğunu anlıyorum. Bunu yapmanın bir yolu, doğrudan bir dosyaya bilgi yazmaktır.
  2. Günlüğe kaydetme amacıyla glog gibi özel bir kütüphane tasarlamanın amacı nedir? Günlüğe kaydetme anlayışım doğru mu, yoksa değiştirmem mi gerekiyor? Birisi bir günlük kütüphanesi kullanmanın önemini göstermek için pratik bir örnek verebilir mi?
  3. Günlüğe kaydetme kitaplığı seçerken hangi özelliklere bakmak gerekir?
  4. Uygulamalarda günlüğe kaydetme nasıl etkin bir şekilde kullanılabilir? Başvurunuzun yürütülürken
+3

Günlüğe kaydetme: bu 3am hata ayıklama oturumları sırasında hissedilen acıyı azaltan yararlı bir şeydir. Standart bir kütüphane kullanmak, deneyimli yazarlar tarafından alınan emirleri ve tasarım seçimlerini istismar etmenizi sağlar. – Bathsheba

+2

Tutarlı, hataya dayanıklı yapılandırılmış veriyi verimli bir rasyon kullanarak iplik güvenli bir şekilde tek bir hedefe yazmak, önemsiz olabilir ... –

+0

Yeni başlayanlar için daha ayrıntılı bir yanıt veya en azından sorunları açıklayan bir bağlantıya sahip olmak yararlı olacaktır. Açıkça. –

cevap

12

açılıyor bilgiler size bir kaza, bir çağrı yığını hatta Minidump basitçe bir rapordan olsun daha fazla bağlam veren bir hata veya kilitlenme neden anlamanıza yardımcı olabilir. Bu, özellikle geliştirici olmayan ve hata ayıklayıcı altında çalışan, son kullanıcı/müşteri veya ekibinizdeki geliştiriciler olmayan kişilerden hata veya çökme raporları aldığınızda önemlidir.

Arka plan oyunlarımdadır ve günlüğe kaydetme, birkaç nedenden dolayı oyunlarla özellikle değerli olabilir. Bunlardan bir tanesi, bir sistemdeki donanımın özellikleriyle ilgili olabildiğince, kullanıcının hangi GPU türüne sahip olduğu, hangi grafik sürücüsü sürümünün çalıştığı vb. Gibi bilgilerin günlüğe kaydedilmesi, yalnızca bir ekranda görünen hataların ayıklanması için gerekli olabilir. özel yapılandırma. Bir diğeri ise oyunun, fizik, yapay zeka ve oyun kuralları gibi şeylerin simülasyonu ile kombine edilen kullanıcı girişine tepki olarak oyunun zaman içinde geliştiği bir simülasyon yönüne sahip olmasıdır. Bir çökme veya hataya kadar olan süreçte ne olup bittiğini anlamak, nasıl yeniden üretileceğini anlamaya yardımcı olur ve sorunun kök nedenine değerli ipuçları verebilir.

Bir kayıt kitaplığı, günlüğe kaydetme için kullanılabilecek işlevselliği ekler ve basit bir yazdırma dosyasında bulunan özelliklerin ötesine geçer. Bu, şu şeyleri içerir:

  • Hata ayıklama, sürüm oluşturma gibi etkenlere bağlı olarak günlüğe kaydetme miktarını denetleme ve bir -verbose bayrağı gibi çalışma zamanı ayarları.
  • Bağımsız olarak etkinleştirilebilen, devre dışı bırakılabilen veya belirli bir ayrıntıya ayarlanabilen 'kanallar' kavramı. Örneğin, bir grafik sorununu ayıklamak için, 'ağ' ve 'ses' kanallarını sessize ederken 'grafik' kanalının maksimum ayrıntıya ayarlanmasını isteyebilirsiniz.
  • Bir ağ üzerinden uzak bir veritabanına oturum açmak için günlüğe kaydetme işleminden diskteki yerel bir dosyaya kadar uzanan esnek bir arka uç.
  • Güvenlik iş parçacığı, aynı anda birden çok farklı iş parçacığı tarafından aynı anda günlüğe kaydederken günlüğe kaydetme işlemini gerçekleştirir.
  • Günlük girişlerinin zaman damgası ve diğer ilgili bilgilerle (kanal, ayrıntı düzeyi vb.) Otomatik olarak etiketlenmesi. Eğer günlük tutma kütüphane sağlıyorsa

    • kanalları ve ayrıntı seviyeleri iyi kullanın: Bir günlük kütüphaneden yararlanmak nasıl gelince

    , yani bazı genel öneriler uygulamanıza bağlı olup, ancak burada Onları (ve gerekir). Bu, uygulamanız büyüdükçe çok büyük miktarda günlük mesaj haline gelebilecekleri yönetmenize yardımcı olacaktır.

  • Beklenmeyen ancak ölümcül olmayan bir durumla karşılaşırsanız ve işlemezseniz, daha sonra beklenmeyen sorunlara yol açması durumunda, bu konuyla ilgili bazı bilgileri kaydedin.
  • Uygulama başlangıcında, bir müşteriden bir hata veya kilitlenme raporu alırsanız, daha sonra nadir hataların çoğaltılması için yararlı olabilecek herhangi bir bilgiyi günlüğe kaydedin. Çok fazla bilginin yanında, önceden neyin yararlı olabileceğini asla bilemezsiniz. Bu, CPU tipi, GPU modeli ve sürücü sürümü, kullanılabilir bellek, işletim sistemi sürümü, kullanılabilir sabit sürücü alanı, vb. Gibi şeyleri içerebilir.
  • Anahtar durumu geçişlerini kaydederek uygulamanızın hangi durumda olduğunu ve ne zaman orada bulunduğunu izleyebilirsiniz. Bir sorunu ayıklarsınız.
+1

Bu çok faydalıdır. Bir ton teşekkürler. –

+0

Bu mükemmel bir cevaptır, ancak @UjjwalAryan, ayrıca hata ayıklama yaparken pdb dosyalarını nasıl kullanacağınızı da öğrenmelisiniz. – Bathsheba

+0

Evet. GNU hata ayıklayıcısını kullanıyorum. Ama başka bir açık kaynak projenin kaynak kodunu okudum ve yoğun bir şekilde kullanılmış olan glog kütüphanesinin kullanımına rastladım. Bu tür kitaplıkların kullanımı hakkında ve çevrimiçi olarak nasıl verimli bir şekilde istihdam edilebilecekleri hakkında hiçbir bilgi bulamadım. Ben de soruyu sordum. Bunun neden çok geniş olarak işaretlendiğini bilmiyorum. Bu konuda çevrimiçi kaynak yok ve ne yazık ki tomurcuklanan kodlayıcıların çoğu bu tür temel sorularla ilgili sorunlarla yüzleşiyor. –

2

Çok sayıda program bir tür günlük kaydı kullanır ve kod nispeten basit olsa bile tekerleği yeniden icat etmek için çok az nokta vardır.

Diğer kitaplıklar da kayıt kitaplığını kullanabilir, bu nedenle bir projeye dahil ettiğiniz her kitaplık için günlük dosyalarını yapılandırmak zorunda kalmadan, yalnızca bir kayıt kitaplığını yapılandırabilirsiniz. Bu ayrıca, günlüğe kaydetme kodunda görünebilecek herhangi bir hatanın, birden fazla kitaplığın yerini almak yerine yalnızca bir kitaplığı değiştirerek sabitlenebileceği anlamına gelir.

Son olarak, diğer geliştiriciler için kodun okunmasını kolaylaştırır çünkü özel günlüğünüzü nasıl uygulayacağınızı öğrenmek zorunda kalmazlar.