Konfigurieren des NLog-Layouts zum Anzeigen aller Ereigniskontexteinträge

8

Ich bin gerade dabei, eine webapi2-Anwendung zu entwickeln und meine Protokolle mit NLog zu erstellen.

In meiner Anwendung logge ich mich mit dem LogEventInfo.Properties-Dictionary folgendermaßen ein:

%Vor%

Alles funktioniert gut, aber ich finde nicht, wie ich das Layout so rendern kann, dass es alle Schlüsselwerteinträge aus dem LogEventInfo.Properties Dictionary ausgibt.

lässt annehmen, dass mein Ziel eine Datei ist, dann muss ich explizit den Schlüsselnamen erwähnen, Gibt es eine Möglichkeit, den gesamten Inhalt des Wörterbuchs anzuzeigen? So mache ich es heute, wo ich nur die Einträge protokollieren kann, die ich kenne:

%Vor%     
Ben Guri 22.02.2015, 16:09
quelle

2 Antworten

2

Es gibt einen integrierten Layout-Renderer in NLog, der diesen Zweck erfüllt - $ {all-event-properties}. Standardmäßig werden alle Ereigniskontexteigenschaften im Schlüssel / Wert-Format, getrennt durch Kommas, ausgegeben.

Überprüfen Sie die Dokumente für weitere Details Ссылка

    
pkmiec 22.12.2015, 20:28
quelle
4

Es gibt keine integrierte Unterstützung, die alle Eigenschaften gleichzeitig darstellen kann. Wenn Sie sich den Code im Event-Kontext-Layout-Renderer ansehen, dann ist es das nur einen einzelnen Wert der Eigenschaft basierend auf dem Element, dh dem Eigenschaftsnamen, hinzufügen.

Sie können einen benutzerdefinierten Layout-Renderer erstellen, der alle Eigenschaften von LogEventInfo drucken kann. Anstatt den Wert der Eigenschaft basierend auf dem Objekt zu holen, fügen Sie sie einfach alle zum Zeichenfolgen-Generator hinzu, der zum Ziel gedruckt wird.

%Vor%

Sie können diesen benutzerdefinierten Layout-Renderer mit dem <extension> -Tag in der Nlog-Konfigurationsdatei registrieren.

%Vor%

Dies soll alle Eigenschaften values only drucken, ohne dass der Elementname erforderlich ist.

    
vendettamit 22.12.2015 20:20
quelle

Tags und Links