如何在serilog中将对象展平为多列

时间:2019-05-22 21:01:55

标签: serilog

我希望能够使用像这样的以下对象使用Serilog和Serilog MsSqlServer接收器登录

对象

public class Person
{
    public string Name {get;set;}
    public string PhoneNumber {get;set;}
}

记录

Logger.LogInformation("Data Received.  {@Person}", person);

架构

,并在具有此模式的Sql表中输出

 CREATE TABLE PersonLog
 (
    [Id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
    [Name] NVARCHAR(128) NULL,
    [PhoneNumber] NVARCHAR(128) NULL
 )

如何使用Serilog完成此操作?

我能够使这一行正常工作,但是如果类有很多列,那可能会变得残酷

Logger.LogInformation("Data Received {Name} {PhoneNumber}", person.Name, person.PhoneNumber);

我的设置代码基本上如下。我删除了删除默认列的代码,因为它起作用了。

columnOptions.AdditionalDataColumns = new Collection<DataColumn>
{
    new DataColumn("Name", typeof(string)),
    new DataColumn("PhoneNumber", typeof(string))
}

Log.Logger = new LoggerConfiguration()
  .MinimumLevel.Information()
.WriteTo.MSSqlServer(ConfigurationManager.ConnectionStrings["DbContext"].ConnectionString, "PersonLog", columnOptions: columnOptions)
.CreateLogger();

0 个答案:

没有答案