serilog - 从 appsettings 更改标准 MSSqlServerSink 表
问题描述
在我的 ASP.NET Core 2.1 Web API 中,我使用 Serilog 和 MSSqlServerSink。如何通过使用 appsettings 配置来更改默认表结构并将数据添加到这些列?
我已经尝试根据文档示例设置值,但没有错误。就好像设置被忽略了一样。我知道正在读取设置,因为其中一些正在被拾取,例如表名。我在其他 ASP.NET 论坛上发布了问题,这些建议没有任何效果。我在 Serilog Gitter 提要上发布了问题,但没有得到答案。我确实在 github 问题上发帖,有人建议从最新版本升级到开发版本,但这是一个实时环境。这是 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
检查此答案以获取更多详细信息https://stackoverflow.com/a/55264488/3134112
推荐阅读
- delphi - Delphi,使用什么控件代替多对复选框和组合框?
- sql - 链接到多个相关记录的语法
- c++ - gcc 5.4前后的std::accumulate声明
- bash - bash 脚本能否在不杀死它可能已经启动的任何应用程序的情况下终止?
- django - 如何在拍卖应用程序中处理并发出价?
- python - cython中并行函数的运行时间
- java - 为什么 applicationContext.getBean(beanName) 明显存在时返回 null?
- php - 我如何处理和限制在 laravel 项目上执行的查询数量?
- sqlite - 处理这个需要什么 SQLite 列数据类型?
- python - 有没有办法在多维数组的第一项中搜索项目?