2014-06-12 8 views
5

Ich versuche, ein paar Anreicherer (Maschinenname und Thread-ID für jetzt) ​​in Verbindung mit einer rollenden Dateisenke und einer Loggly-Senke zu verwenden. Während die Loggly-Ereignisse korrekt den Computernamen und die Thread-ID-Eigenschaften enthalten, kann ich diese in den Rolling-File-Ereignissen nicht sehen.Serilog Maschinenname Anreicherer für rollende Dateisenke

Hier ist meine xml/Code-Konfiguration:

<add key="serilog:minimum-level" value="Information" /> 
<add key="serilog:write-to:RollingFile.pathFormat" value="C:\Foo\bar-{Date}.txt" /> 
<add key="serilog:using" value="Serilog.Sinks.Loggly" /> 
<add key="serilog:write-to:Loggly.inputKey" value="redacted Loggly key" /> 

new LoggerConfiguration() 
    .ReadAppSettings() 
    .Enrich.WithMachineName() 
    .Enrich.WithThreadId() 
    .CreateLogger() 

Hat jemand verwalten, dies zu tun? Kann dieses Verhalten von Entwurf sein oder werden diese Anreicher nicht für das Rolling von Dateisenken unterstützt?

Antwort

13

Der Computername und die Thread-ID werden allen Protokollereignissen als Eigenschaften hinzugefügt. Sie befinden sich nicht im Nachrichtenformat, sodass Serilog sie nicht in eine textuelle Darstellung konvertiert. Sie werden jedoch an die Senken gesendet. Die Loggly-Senke wählt alle Eigenschaften aus (einschließlich der Thread-ID usw.) und wandelt diese in etwas um, das Loggly versteht (da es beliebige Arten von Daten akzeptieren kann).

Wenn die RollingFile-Senke auch den Computernamen usw. ausgeben soll, müssen Sie die Ausgabevorlage anpassen. Also um es zum Beispiel dieser Einstellung:

outputTemplate: "{Timestamp:HH:mm} [{Level}] {MachineName} ({ThreadId}) {Message}{NewLine}{Exception}" 

Siehe auch https://github.com/serilog/serilog/wiki/Configuration-Basics#enrichers

Da die Roll Datei Spüle keine Möglichkeit zur Ausgabe aller Eigenschaften hat, können Sie nur die gerenderte Nachricht erhalten, die nicht standardmäßig diese Eigenschaften enthält .

+0

Dies macht jetzt vollkommen Sinn. Ich glaube, ich bin noch immer in geistiger Hinsicht von der klassischen Protokollierung zu diesem "Objekt-Logging" -Konzept übergegangen. – CyberDude

+0

Die RollingFile-Senke ist eine schnelle Möglichkeit, um Zeug auszugeben, die wahre Macht ist, wenn Sie es in Seq, ElasticSearch oder einem Online-Log-Anbieter wie Loggly speichern. Dann können Sie auf alle Metadaten zugreifen, Analysen durchführen, Suchen usw. – Michiel

+0

Ja, wir verwenden Loggly ebenfalls, aber es scheint ein bisschen langsam und schwer einzurichten, so dass Sie schnell herausfinden können, wonach Sie suchen. – CyberDude

Verwandte Themen