从 appsettings 改变标准 MSSqlServerSink table
Altering standard MSSqlServerSink table from appsettings
在我的 ASP.NET Core 2.1 web API 中,我将 Serilog 与 MSSqlServerSink 一起使用。如何更改默认 table 结构并通过使用 appsettings 配置它向这些列添加数据?
我已经尝试按照文档示例设置值,但没有错误。就好像设置被忽略了一样。我知道正在读取设置,因为其中一些设置正在被提取,例如 table 名称。我已经 post 在其他 ASP.NET 论坛上提出问题,但这些建议没有任何效果。我 post 在 Serilog Gitter 提要上提问,但没有得到答案。我在 github 问题上做了 post,有人建议从最新版本升级到开发版本,但这是一个实时环境。这是 appsettings.json 文件中配置 serilog 的部分。
"Serilog": {
"Using": [ "Serilog.Sinks.MSSqlServer" ],
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning"
}
},
"WriteTo": [
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "Server=(local);Database=ACLWebAPILogs;trusted_connection=true",
"tableName": "ACLWebAPILog",
"restrictedToMinimumLevel": "Information",
"autoCreateSqlTable": true
"columnOptionsSection": {
"disableTriggers": true,
"removeStandardColumns": [ "MessageTemplate", "Properties" ],
"additionalColumns": [
{
"ColumnName": "ControllerName",
"DataType": "nvarchar",
"AllowNull": true,
"DataLength": 50
},
{
"ColumnName": "MessageType",
"DataType": "nvarchar",
"AllowNull": true,
"DataLength": 50
}
]
}
}
}
]
}
Startup.cs 中 Startup 构造函数中的代码包含以下行以添加日志系统:
// Init Serilog configuration
Log.Logger = new LoggerConfiguration()
.ReadFrom.ConfigurationSection(configuration.GetSection("Serilog"))
.CreateLogger();
在配置函数中我有:
loggerFactory.AddSerilog();
我原以为这会删除 MessageTemplate 和 Properties 列并添加下面引用的两个。就好像所有通过 autoCreateSqlTable 的东西都被忽略了。我看过 Enrichers,但它们并没有按照我的意愿行事。
更新 Serilog.Sinks.MSSqlServer
至版本 5.1.3
Install-Package Serilog.Sinks.MSSqlServer -Version 5.1.3
查看此答案了解更多详情
在我的 ASP.NET Core 2.1 web API 中,我将 Serilog 与 MSSqlServerSink 一起使用。如何更改默认 table 结构并通过使用 appsettings 配置它向这些列添加数据?
我已经尝试按照文档示例设置值,但没有错误。就好像设置被忽略了一样。我知道正在读取设置,因为其中一些设置正在被提取,例如 table 名称。我已经 post 在其他 ASP.NET 论坛上提出问题,但这些建议没有任何效果。我 post 在 Serilog Gitter 提要上提问,但没有得到答案。我在 github 问题上做了 post,有人建议从最新版本升级到开发版本,但这是一个实时环境。这是 appsettings.json 文件中配置 serilog 的部分。
"Serilog": {
"Using": [ "Serilog.Sinks.MSSqlServer" ],
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning"
}
},
"WriteTo": [
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "Server=(local);Database=ACLWebAPILogs;trusted_connection=true",
"tableName": "ACLWebAPILog",
"restrictedToMinimumLevel": "Information",
"autoCreateSqlTable": true
"columnOptionsSection": {
"disableTriggers": true,
"removeStandardColumns": [ "MessageTemplate", "Properties" ],
"additionalColumns": [
{
"ColumnName": "ControllerName",
"DataType": "nvarchar",
"AllowNull": true,
"DataLength": 50
},
{
"ColumnName": "MessageType",
"DataType": "nvarchar",
"AllowNull": true,
"DataLength": 50
}
]
}
}
}
]
}
Startup.cs 中 Startup 构造函数中的代码包含以下行以添加日志系统:
// Init Serilog configuration
Log.Logger = new LoggerConfiguration()
.ReadFrom.ConfigurationSection(configuration.GetSection("Serilog"))
.CreateLogger();
在配置函数中我有:
loggerFactory.AddSerilog();
我原以为这会删除 MessageTemplate 和 Properties 列并添加下面引用的两个。就好像所有通过 autoCreateSqlTable 的东西都被忽略了。我看过 Enrichers,但它们并没有按照我的意愿行事。
更新 Serilog.Sinks.MSSqlServer
至版本 5.1.3
Install-Package Serilog.Sinks.MSSqlServer -Version 5.1.3
查看此答案了解更多详情