6

ローリング ファイル シンクと Loggly シンクと組み合わせて、いくつかのエンリッチャー (マシン名とスレッド ID) を使用しようとしています。Loggly イベントにはマシン名とスレッド ID のプロパティが正しく含まれていますが、ローリング ファイル イベントではこれらを確認できません。

ここに私のxml/コード構成があります:

<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()

誰かがこれを行うことができましたか?この動作は仕様によるものですか、それともこれらのエンリッチャーはローリング ファイル シンクでサポートされていないのでしょうか?

4

2 に答える 2

15

machinename と threadid は、プロパティとしてすべてのログ イベントに追加されます。これらはメッセージ形式ではないため、serilog はそれらをテキスト表現に変換しません。ただし、それらはシンクに送信されます。Loggly シンクはすべてのプロパティ (スレッド ID などを含む) を選択し、それらを Loggly が理解できるものに変換します (あらゆる種類のデータを受け入れることができるため)。

RollingFile シンクにマシン名なども出力させたい場合は、出力テンプレートを調整する必要があります。たとえば、次のように設定します。

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

https://github.com/serilog/serilog/wiki/Configuration-Basics#enrichersも参照してください

ローリング ファイル シンクにはすべてのプロパティを出力する方法がないため、デフォルトではこれらのプロパティを含まないレンダリングされたメッセージのみを取得します。

于 2014-06-26T19:41:53.520 に答える