Ich möchte einige zusätzliche Informationen mit meiner Fehlermeldung speichern. Zum Beispiel sollte es Benutzerabfrage oder etwas anderes sein. Wie soll ich das machen?
Gibt es Build-Methoden zum Protokollieren von Sammlungen, Struktur oder Objekten? Oder ich sollte es selbst serialisieren?
Nein, für das Serialisieren von Objekten ist nichts eingebaut. Wenn Sie formatierte Methoden wie Debug<T>(string message, T argument)
intern verwenden (Sie können die Klasse NLog.LogEventInfo
sehen), wird simple String.Format
zum Erstellen formatierter Nachrichten verwendet (d. H. Nur ToString()
wird für jeden Parameter aufgerufen).
Ich verwende Json.NET , um Objekte und Sammlungen zu JSON zu serialisieren. Es ist einfach, eine Erweiterungsmethode wie
zu erstellen %Vor%Und dann verwenden Sie es während der Protokollierung:
%Vor%Dieses vereinfachte Beispiel zeigt, wozu ich nach dem Spielen mit NLog gekommen bin. In meiner Lösung verwende ich eine code-basierte Konfiguration, um doppelte xml nlog.config-Dateien für jedes asp.net-Projekt zu minimieren. Funktioniert mit NLog v4.4.1.
Logger statischer Helfer:
%Vor%FileTarget-Konfiguration:
%Vor%Ausgabe für benutzerdefiniertes Objekt:
%Vor%