Frage

Wenn Sie mit der Anmeldung Log4Net ist es sehr einfach Klasse zu setzen, die das Protokoll in die Log-Datei mit dem Namen. Ich habe in der Vergangenheit festgestellt, dass dies macht es sehr einfach, den Code zu verfolgen und die Strömung durch die Klassen zu sehen. In Log4Net verwende ich die% Logger Eigenschaft in der Umwandlungsmuster wie folgt:

<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />

Und das gibt mir den Ausgang Ich möchte:

2008-09-19 15:40:26,906 [3132] ERROR <b>Log4NetTechDemo.Tester</b> [(null)] - Failed method

Sie können von der Ausgabe sehen, dass die Klasse, die das Protokoll ist Log4NetTechDemo.Tester genannt hat, so kann ich den Fehler zu dieser Klasse zurückverfolgen ganz leicht.

Im Logging Applicaton-Block kann ich nicht herausfinden, wie dies mit einem einfachen Log-Aufruf zu tun. Wer weiß, wie es getan werden kann? Wenn ja, wäre ein Beispiel oder Schritte zu tun, so sehr hilfreich sein.

War es hilfreich?

Lösung

Fügen Sie die Rufmethode zu der ExtendedProperties Wörterbuch der LogEntry; Angenommen Sie haben die ExtendedProperties Token aus der Formatierungsvorlage nicht entfernt haben, natürlich.

Setzen Sie so etwas wie dies in einem Logging-Wrapper:

public void LogSomething(string msg)
{
  LogEntry le = new LogEntry { Message = msg };
  le.ExtendedProperties.Add("Called from", new StackFrame(1).GetMethod().ReflectedType);
  Logger.Write(le);
}

Der Aufruf dieser etwas wie dies am Ende des Protokolls erzeugt:

Extended Properties: Called from - LAB_Demo.Tester

Andere Tipps

Wir havn't fand eine einfache Möglichkeit, ohne den Stacktrace zu schlagen. Wenn es eine Ausnahme ist, wir greifen nur aus, dass:

 StackTrace trace = new StackTrace(ex, true);
 StackFrame frame = trace.GetFrame(0);

Für gesprächig Artikel schreiben wir nur die Zeichenfolge. Wir haben einen Code-Schnipsel, die die Klassennamen greifen beim Einführen der Lage ist. Wir erklären auch den const String mit dem Klassennamen.

Nicht schön, aber es ist das Beste, was wir gefunden haben. Ich hoffe, dass jemand anderes eine bettwe Antwort in diesem Thread hat:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top