首页 > 解决方案 > 从 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

解决方案


更新Serilog.Sinks.MSSqlServer到版本5.1.3

Install-Package Serilog.Sinks.MSSqlServer -Version 5.1.3

检查此答案以获取更多详细信息https://stackoverflow.com/a/55264488/3134112


推荐阅读