W log4net użycie jednego programu rejestrującego na klasę ułatwia przechwytywanie źródła komunikatu dziennika (tj. Klasy zapisującej w dzienniku). Jeśli nie masz jednego rejestratora na klasę, ale zamiast tego masz jeden rejestrator dla całej aplikacji, musisz skorzystać z większej liczby sztuczek refleksji, aby wiedzieć, skąd pochodzą komunikaty dziennika.
Porównaj następujące:
Zaloguj się na zajęcia
using System.Reflection;
private static readonly ILog _logger =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public void SomeMethod()
{
_logger.DebugFormat("File not found: {0}", _filename);
}
Jeden rejestrator na aplikację (lub podobny)
Logger.DebugFormat("File not found: {0}", _filename);
-- or --
Logger.DebugFormat(this, "File not found: {0}", _filename);
Korzystając z drugiego przykładu, Logger musiałby zbudować ślad stosu, aby zobaczyć, kto go wywołuje, lub twój kod zawsze musiałby przekazać wywołujący. W przypadku stylu rejestratora według klasy nadal to robisz, ale możesz to zrobić raz na klasę zamiast raz na wywołanie i wyeliminować poważny problem z wydajnością.