2016-06-26 6 views
2

Serilogを使用しており、コンテキストプロパティを含む情報メッセージを印刷したいとします。例えばSerilog印刷コンテキストプロパティ

var logger = Log.ForContext("FirstName", "Yosi"); 
logger.Information("Hello {FirstName}") 

と予想されるとして、これは動作しますが、私は、ログメッセージ、それを自己にパラメータを追加するとき、私は予想外の結果を得ます。

var logger = Log.ForContext("FirstName", "Yosi"); 
logger.Information("Hello {FirstName} {LastName}", "Attias") 

私は結果があることを期待:

こんにちはYosi Attias

が、私は得る:

こんにちはAttias {姓}

そのための修正はありますか?私は何かを欠いている?これはバグですか?

答えて

0

メッセージテンプレートは、ロギングメソッドに渡されるパラメータに対してのみ評価されます。ログステートメントは、プログラム内の他の設定/コンテキストに関係なく、一貫して動作するように意図されています。

あなたは、ログ出力に追加のプロパティを追加設定しているものは何でもシンクのoutputTemplate引数にそれらを追加したい場合は、次の

Log.Logger = new LoggerConfiguration() 
    .WriteTo.ColoredConsole(outputTemplate: 
    "{Timestamp:HH:mm} [{Level}] ({LastName}) {Message}{NewLine}{Exception}") 
    .CreateLogger(); 
+0

現在、私は私のクラスでロガーを持っている、と私の方法で - Iパラメータでコンテキストを取得する私はコンテキストをロガーに追加します。 例:https://gist.github.com/yosiat/3f98e98ccc586f1ef58a2a23858dd0ee 私のロガーの出力テンプレートを変更して、「messageLogger」のmessageIdを追加することはできますか? – Yosi

+0

こんにちは、現在のところ、出力テンプレートはカスタムフォーマッティングコード以外の唯一のオプションです。 –