我希望能够使用像这样的以下对象使用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();