【问题标题】:Writing custom columns to MS SQL Server with Serilog sink使用 Serilog 接收器将自定义列写入 MS SQL Server
【发布时间】:2019-06-10 17:33:02
【问题描述】:

我正在尝试使用 Serilog.Sinks.MSSqlServer 接收器将自定义列写入日志表。根据documentation,我添加了columnOptionsSection

"columnOptionsSection": {
  "additionalColumns": [
    {
      "ColumnName": "MachineName",
      "DataType": "nvarchar",
      "DataLength": 100
    }
  ]
}

我还有"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ] 更下方(它可以与File sink 一起正常工作)。

日志已写入,但 MachineName 列为 NULL。 @AlexRiabov states 当前版本的接收器没有 Microsoft.Extensions.Configuration 支持。这与文档相矛盾,文档中有一个专门的部分。他还表示更新到最新的开发版本可以解决问题 - 但是,该版本会引发异常,因此我无法使用它。

所以我的问题...

  1. 是否可以从 appsettings.json 定义自定义列以与 MSSqlServer 接收器一起使用?如果有,怎么做?

  2. Serilog.Sinks.MSSqlServer 接收器仍在处理中吗?上一个主要版本似乎是一年多以前。

【问题讨论】:

    标签: c# sql-server .net-core serilog


    【解决方案1】:

    5.1.3-dev-00236 为我工作

    确保您添加了环境丰富器库

    我的 appSettings json:

        "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
        "WriteTo": [{
                "Name": "MSSqlServer",
                "Args": {
                    "connectionString": --removed--,
                    "schemaName": "dbo",
                    "tableName": "Logs",
                    "autoCreateSqlTable": false,
                    "restrictedToMinimumLevel": "Debug",
                    "batchPostingLimit": 5,
                    "period": "0.00:00:02",
                    "columnOptionsSection": {
                        "addStandardColumns": [ "LogEvent" ],
                        "removeStandardColumns": [ "MessageTemplate", "Properties" ],
                        "additionalColumns": [
                            {
                                "ColumnName": "UtcTimeStamp",
                                "DataType": "datetimeoffset",
                                "AllowNull": false
                            },
                            {
                                "ColumnName": "MachineName",
                                "DataType": "nvarchar",
                                "DataLength": 128,
                                "AllowNull": false
                            }
                        ]
                    }
                }
            }]
    

    【讨论】:

    • 是的,我已经在 prod 中使用它几个月了,它非常可靠。我将对您的文件进行的一项更改是增加 batchPostingLimit。您不希望您的应用程序不断写入日志。我将我的记录设置为 1000 条记录或每 5 秒一次。
    • 我会记住这一点 - 为了开发目的,我把它设置得很低 - 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多