Wir verwenden NLog zum Anmelden einer C # MVC3-Webanwendung. Alle unsere Controller erweitern eine benutzerdefinierte Basis "ApplicationController", die uns Zugriff auf eine ständig benötigte Methoden und s Mitglieder.
Ich möchte, dass alle Controller über diese Basisklasse Zugriff auf den Logger haben, aber ich möchte, dass Sie wissen, aus welcher abgeleiteten Klasse die Protokollanweisungen stammen.
Unser Anwendungscontroller sieht so aus:
%Vor%Wenn ein abgeleiteter Controller den Logger nicht überschreibt, zeigen alle Anweisungen an, dass sie vom Application Controller stammen. Derzeit habe ich im Wesentlichen die gleiche Logger-Anweisung in allen abgeleiteten Controllern. Zum Beispiel:
%Vor%Offensichtlich ist dies eine schlechte Implementierungspraxis.
TIA!
Ich bin mit NLog nicht vertraut, aber in Log4Net die Syntax
LogManager.GetLogger(this.GetType())
wird erreichen, was Sie wollen. GetType
gibt den Blatttyp in Ihrer Vererbungshierarchie zurück, auch wenn er in der Basis ApplicationController
-Klasse aufgerufen wird, wenn der Logger zum ersten Mal erstellt wird (dh beim ersten Zugriff auf die Logger-Eigenschaft), wird er mit dem Typ PropertyController
NLog API unterscheidet sich geringfügig von Log4net. Sie müssen
verwenden %Vor%Wenn Sie nur den Typ übergeben, erwartet LogManager einen Loggertyp (d. h. einen benutzerdefinierten Logger)
Tags und Links c# inheritance nlog