MVC Günlüğü (Zend Framework)

2 Cevap php

Örneğin, bir MVC uygulamada bir Zend Framework uygulama (Zend_Log) günlük işlevselliğini koymak için nereye geldiğinde en iyi uygulama var mı? Ben denetleyicisi veya modelinde günlüğü koymak gerekir? Ya da her ikisi mi?

Her ikisi de, bunlar, aynı veya ayrı bir kayıt cihazı bir olmalıdır?

2 Cevap

Nesneye yönelik tasarım için ANLAMAK kılavuzlarında Information Expert prensibi izleyin:

... Bunu yerine getirmek için gerekli en çok bilgi ile sınıflarında bir sorumluluk yerleştirin.

Yani giriş için gereken verileri içeren sınıfından günlüğüne yazardı. Günlüğe kaydetmek istediğiniz olay modelinin çalışması ile ilgilidir, o modelde günlüğüne yazma. Olay kontrolörün çalışması ile ilgilidir oturum açmak istiyorsanız, o zaman kontrolör günlüğüne yazma.

Bir uygulama için bir günlük çıktı oluşturmak etmeyin. Aksi takdirde herhangi bir teşhis bilgilerini bulmak için birçok log dosyaları üzerinden avlamak gerekecek! Sen Zend_Registry bir günlük nesnesi saklayabilirsiniz böylece app herhangi bir sınıfından günlüğünü çağırabilirsiniz.


Yorumlarınızı Re:

Logger beklenen kayıt defteri anahtarı altında bulunan değilse, sadece nazikçe başarısız iyi. Başarısız tarafından incelikle ben çıkışı (web sayfası) Stdout'a bir hata ya da (httpd sunucu günlüğüne) stderr'yi, ya da bir özel durum ve uygulama halletsin ya demek.

Bağımlılıkları gelince, bu bir sorun değildir. Bir sınıfın başka bir sınıf kullanan her zaman bağımlılık benzer bir tür var. Registry tasarım deseni bakın.

Ile kabul Bill Karwin's comment, ben de tek bir günlük çıkışını kullanmak değil, aynı zamanda yeteneği yararlanmak istiyorum filter errors based on priority (örneğin, kolaylıkla kurulum olabilecek bir kundakçı logger da var).

Bizim ana uygulama, bir de ana-log olarak kullanılan (basit bir sayfa arka uç bir RSS besleme dönüştü) db-yazar ve kritik hatalar için e-posta aldım. Sıralanabilir veri ve bunun dışında istatistikleri almak için çok kullanışlı.