36

アプリケーションで MS SQL Server シンクで Serilog を使用しています。次のクラスを定義したとしましょう...

public class Person
{
  public string FirstName { get; set; }
  public string LastName { get; set; }

  public DateTime BirthDate { get; set; }
  // ... more properties
}

...そしてインスタンスを作成しました:

var person = new Person
{
    FirstName = "John",
    LastName = "Doe",
    BirthDate = DateTime.UtcNow.AddYears(-25)
};

コードに次のログ呼び出しを配置し​​ました。

Log.Information("New user: {FirstName:l} {LastName:l}",
    person.FirstName, person.LastName);

BirthDateプロパティをメッセージ テンプレートに追加せずにログに記録して、 PropertiesXML 列内にレンダリングすることはできますか? 後でアプリケーションのログ ビューアの詳細ビューに出力したいと思います。

私は基本的に、オブジェクトの破壊に似た動作を探していますが、フラット オブジェクトをログ メッセージの一部として出力することはありません。

4

3 に答える 3

43

これは次のように簡単です。

Log.ForContext("BirthDate", person.BirthDate)
   .Information("New user: {FirstName:l} {LastName:l}",
                           person.FirstName, person.LastName);
于 2015-01-11T21:03:33.973 に答える