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
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.
Neden Java statik olarak bir sınıf bil...
Web isteği başına bir DbContext... ned...
Neden Java bize bir isim dosya adından...
::push_back vector) kullanır değeri, s...
Dosya başına bir sınıf kuralı .NET?...