C # abgeleiteter Klassentyp, der für die Protokollierung mit NLog in der Basis benötigt wird

8

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.

  1. Wie kann ich das austrocknen? Insbesondere, was ist mein Verständnis von C # fehlt genau diese spezifische Aufgabe zu erfüllen?
  2. Gibt es ein Protokollierungsmuster, dem ich folgen sollte, wenn ich das nicht ausstelle? Protokollierungsklasse (NLog) direkt?

TIA!

    
Bobby B 03.01.2012, 11:07
quelle

3 Antworten

12

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     

Dr. ABT 03.01.2012, 11:16
quelle
3

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)

    
Sebastian Slutzky 26.11.2015 10:57
quelle
-1

Überprüfen Sie einfach nLog Wiki hier

  

In den meisten Fällen haben Sie einen Logger pro Klasse, also macht es       Sinn, Logger den gleichen Namen wie die aktuelle Klasse zu geben.

Macht Sinn, es so zu machen

%Vor%     
Anand 03.01.2012 11:22
quelle

Tags und Links