Çoğunlukla büyük ölçekli, yüksek kullanılabilirlikli tip sistemler inşa ediyorum, bu yüzden cevabım ona bir üretim destek bakış açısından bakmaya eğilimli; dedi ki, kabaca şu şekilde atarız:
hata : sistem sıkıntıda, müşteriler muhtemelen etkileniyor (veya yakında olacak) ve düzeltme muhtemelen insan müdahalesini gerektiriyor. Burada "2AM kuralı" geçerlidir - görüşme yapıyorsanız, bu durum gerçekleşirse 2: 00'de uyanmak ister misiniz? Evetse, "hata" olarak kaydedin.
uyar : beklenmedik bir teknik olay veya iş olayı meydana geldi, müşteriler etkilenebilir, ancak büyük olasılıkla acil insan müdahalesi gerekmez. Çağrı sırasında insanlar hemen çağrılmaz, ancak destek personeli etkinin ne olduğunu anlamak için bu sorunları en kısa zamanda gözden geçirmek isteyecektir. Temel olarak izlenmesi gereken ancak acil müdahale gerektirmeyen herhangi bir sorun.
bilgi : Bir sorunu adli olarak analiz etmemiz gerektiğinde yüksek hacimde görmek istediğimiz şeyler. Sistem yaşam döngüsü olayları (sistem başlatma, durdurma) buraya gidin. "Oturum" yaşam döngüsü etkinlikleri (giriş, çıkış, vb.) Buraya gidin. Önemli sınır olayları da dikkate alınmalıdır (örn. Veritabanı çağrıları, uzak API çağrıları). Tipik iş istisnaları buraya gidebilir (ör. Kötü kimlik bilgileri nedeniyle giriş başarısız oldu). Üretimde yüksek hacimde görmeniz gerektiğini düşündüğünüz diğer tüm etkinlikler buraya gelir.
hata ayıklama : "bilgi" yi kesmeyen hemen hemen her şey ... sistemdeki akışı izlemeye ve özellikle geliştirme ve KG aşamalarında sorunları izole etmeye yardımcı olan herhangi bir mesaj. Önemsiz yöntemlerin çoğuna giriş / çıkış yapmak ve yöntemler içindeki ilginç olayları ve karar noktalarını işaretlemek için "hata ayıklama" seviye günlüklerini kullanıyoruz.
izleme : Bunu sık kullanmıyoruz, ancak bu normal geliştirme sırasında bile normalde etkinleştirilmesini istemediğiniz son derece ayrıntılı ve potansiyel olarak yüksek hacimli günlükler içindir. Örnekler arasında tam bir nesne hiyerarşisinin boşaltılması, büyük bir döngünün her yinelemesi sırasında bazı durumların günlüğe kaydedilmesi vb. Sayılabilir.
Doğru günlük düzeylerini seçmekten veya daha önemli olarak, günlüklerin anlamlı ve gerekli bağlama sahip olmasını sağlamaktır. Örneğin, hemen hemen her zaman iş parçacığı kimliğini günlüklere dahil etmek istersiniz, böylece gerekirse tek bir iş parçacığını takip edebilirsiniz. Ayrıca iş bilgilerini (ör. Kullanıcı kimliği) iş parçacığıyla da ilişkilendirmek için bir mekanizma kullanmak isteyebilirsiniz, böylece günlüğe kaydedilir. Günlük iletinize, iletinin işlem yapılabilir olmasını sağlamak için yeterli bilgi eklemek istersiniz. "FileNotFound özel durumu yakalandı" gibi bir günlük çok yararlı değildir. Daha iyi bir ileti, "/usr/local/app/somefile.txt. Yapılandırma dosyasını açmaya çalışırken FileNotFound özel durumu yakalandı." UserId = 12344. "
Ayrıca, orada iyi günlüğe kaydetme rehberleri de vardır ... örneğin, JCL'den (Jakarta Commons Logging) düzenlenmiş bir snippet :
- error - Diğer çalışma zamanı hataları veya beklenmeyen durumlar. Bunların bir durum konsolunda hemen görünmesini bekleyin.
- uyar - Kullanımdan kaldırılmış API'ların kullanımı, API'nın yetersiz kullanımı, 'neredeyse' hatalar, istenmeyen veya beklenmeyen, ancak mutlaka "yanlış" olmayan diğer çalışma zamanı durumları. Bunların bir durum konsolunda hemen görünmesini bekleyin.
- info - İlginç çalışma zamanı olayları (başlatma / kapatma). Bunların bir konsolda hemen görünmesini bekleyin, bu nedenle muhafazakar olun ve minimumda tutun.
- hata ayıklama - sistemden geçen akış hakkında ayrıntılı bilgi. Bunların yalnızca günlüklere yazılmasını bekleyin.
- izleme - daha ayrıntılı bilgi. Bunların yalnızca günlüklere yazılmasını bekleyin.