Ich benutze NLog und nach dem empfohlenen Muster einer Protokolldeklaration für jede Klasse, mit dem Zweck zu verfolgen, welche Klasse/Methode in das Protokoll geschrieben hat. Ich finde das sehr nützlich, um bei jedem Log-Write ein bisschen eine "Stack Trace" auf der obersten Ebene zu haben.Hinzufügen Methodenname in NLog
Mein Code verwendet wie folgt aussehen:
class SomeClass {
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
void DoStuff() {
logger.Debug("stuff"); }
}
Ich hatte vor kurzem die Forderung mein einziges Projekt zu 3 separate Protokolldateien zu schreiben, und um dies zu tun, habe ich mehrere Logger und Ziele wie hier angegeben: https://stackoverflow.com/a/21711838/191206
Allerdings jetzt in meinen Protokolldateien habe ich den Namen der Klassenstufe verloren. Es schreibt jetzt nur den Protokollnamen, den ich in NLog.config angegeben habe. Ich habe einfach betrachtet Hinzufügen der Methode nennen mich mit einem Aufruf an
System.Reflection.MethodBase.GetCurrentMethod(); // use Name property
oder etwas anderes in Reflexion mit wie this
aber ich frage mich, ob NLog gebaut hat etwas in das, was ich bin fehlt? Die Debug() Methode Ich sehe nur die Fähigkeit, eine Zeichenfolge zu schreiben, mit den Parametern & optional formatiert.
Ist dies in NLog integriert?
Haben Sie das überprüft [ '$ {callsite}' Layout-Renderer] (https://github.com/nlog/nlog/wiki/Callsite-Layout-Renderer)? – nemesv
das war es - könntest du diese frage mit dieser lösung beantworten, damit ich dir richtiges kredit geben kann? Vielen Dank – dferraro