Как сгладить объект в несколько столбцов в serilog - PullRequest
0 голосов
/ 23 мая 2019

Я хочу иметь возможность входить в систему, используя приемники Serilog и Serilog MsSqlServer, используя следующий объект, подобный этому

Object

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