2015-01-22 4 views
6

Die RollingFile.outputTemplate, die ich in <appSettings> Konfiguration für mein Waschbecken verwende ist wie folgt:Ausgabe der Ereignisquelle Klassenname in serilog RollingFile outputTemplate?

<add key="serilog:write-to:RollingFile.outputTemplate" value="{Timestamp:HH:mm:ss} [{Level}] {Message}{NewLine}{Exception}" /> 

Der Ausgang log ich, wie ich immer:

19:55:10 [Information] Application_Start...

Aber ich möchte auch Ausgang der Klassenname (Quelle) von wo das Protokoll generiert wurde, z. B. -

19:55:10 [Information] [Global.asax.cs] Application_Start...

Was soll ich zum "Wert" hinzufügen? Ich fügte hinzu [Quelle] aber funktioniert nicht.

value = "[? Source] {Zeitstempel: HH: mm ss} [{Stufe}] {Nachricht} {NewLine} {Exception}"

Antwort

11

Der Eigenschaftsname wird aufgerufen SourceContext - so:

value="{Timestamp:HH:mm:ss} [{Level}] [{SourceContext}] {Message}{NewLine}{Exception}" 
+0

ich habe '[{SourceContext}]' Eigenschaft, aber es ist en leere Halterung zu erzeugen wie - '14.53.41 [Informationen] [] Application_Start ...'. Was ist los mit dir ? irgendeine Idee? –

+2

Sie müssen 'log.ForContext ()' verwenden, um die Eigenschaft an erster Stelle zu generieren, es wird nicht automatisch angefügt –

+0

Was ist, wenn Sie einen benutzerdefinierten Namen möchten? War nicht klar [aus der Quelle] (http://sourcebrowser.io/Browse/serilog/serilog/src/Serilog.FullNetFx/Sinks/RollingFile/RollingFileSink.cs) – drzaus