Я хочу иметь возможность входить в систему, используя приемники 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();