在 serilog.settings.configuration 和 appsettings.json 中指定字符串数组



我正在尝试使用Serilog.Settings.Configuration library来配置我的日志记录,我还使用Serilog.Sinks.AzureTableStorage包,更具体地说,WriteTo.AzureTableStorageWithProperties,它接受类型为string[]propertyColumns参数。

无论我尝试了什么,我都无法让它工作,以便我可以在我的appsettings.json中传递字符串数组(或使用环境变量中的冒号分隔语法(。

我尝试在appsettings.json中做这样的事情:

WriteTo: [
  // ...
  {
    "Name": "AzureTableStorageWithProperties",
    "Args": {
      // ...
      "propertyColumns": [ "Column1", "Column2" ]
    }
  }
]

但是我收到一个错误,说Argument value should be of type Action<>.

我试过这个:"propertyColumns": "Column1, Column2",但这个也吹了(但错误类型不同,因为它是不同的代码路径(。

我还尝试使用环境变量,例如:

Serilog:WriteTo:2:Args:propertyColumns:0="Column1"
Serilog:WriteTo:2:Args:propertyColumns:1="Column2"

但是,又没有运气:(

那么,是否可以以某种方式使用该库指定字符串数组?如果是这样,我在这里错过了什么?

如果你在这里帮助我,我真的非常感谢

根据您的

要求,我定义appsettings.json如下以检查此问题。

{
  "Serilog": {
    "Using": [ "Serilog.Sinks.Console" ],
    "MinimumLevel": "Debug",
    "WriteTo": [
      { "Name": "Console" },
      {
        "Name": "AzureTableStorageWithProperties",
        "Args": {
          "connectionString": "<storage-connection-string>",
          "storageTableName": "mylog",
          "propertyColumns": ["Column1","Column2"]
        }
      }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ]
  }
}

我可以检索与您提到的相同的错误。然后,我发现了类似的问题,如下所示:

使用以下 appSetting.json 获取"参数值应为操作<>"类型

从 appsettings.json 进行配置

根据我的理解,Args的复杂对象现在可能不支持。此外,您还可以在 serilog/serilog-settings-configuration 下添加您的问题。

最新更新