SORU
29 HAZİRAN 2010, Salı


Neden kaydediciler sınıf başına bir logger kullanmanızı tavsiye?

NLog belgelerine göre:

Çoğu uygulama logger adı sınıfın adı ile aynı olduğu her sınıf için bir tane logger kullanın.

Bu log4net çalışır aynı şekilde. Neden bu iyi bir uygulamadır?

CEVAP
29 HAZİRAN 2010, Salı


Log4net, kullanarak her sınıf için bir tane logger kolay günlük mesaj (örn. kaynağını yakalamak için yapar sınıf günlük yazma). Eğer her sınıf için bir tane logger yok eğer değil, ama bunun yerine tüm uygulama için bir logger var, daha fazla yansıma hileler için günlük iletileri nereden geldiğini biliyor başvurmak gerekir.

Aşağıdakileri karşılaştırın:

Sınıf başına günlük

using System.Reflection;
private static readonly ILog _logger = 
    LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);    

public void SomeMethod()
{
    _logger.DebugFormat("File not found: {0}", _filename);
}

Uygulama (veya benzer) başına bir logger

Logger.DebugFormat("File not found: {0}", _filename); // Logger determines caller

-- or --

Logger.DebugFormat(this, "File not found: {0}", _filename); // Pass in the caller

İkinci örnek olarak kullanarak, Logger iz kimin aradığını görmek için bir yığın veya Kodu her zaman arayanın geçmek zorunda olacağını inşa etmek gerekir. Logger başına sınıf stili ile, hala bunu yapmak, ancak arama başına sınıf başına bir kez yerine bir kez yap ve ciddi bir performans sorunu ortadan kaldırabilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonathan Leack

    Jonathan Lea

    26 ŞUBAT 2007
  • JorteexHD

    JorteexHD

    20 NİSAN 2012
  • Joseph Hayhoe

    Joseph Hayho

    20 Mayıs 2010