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

时间:2018-04-13 03:58:38

标签: c# asp.net-core-2.0 azure-table-storage serilog

我尝试使用Serilog.Settings.Configuration库来配置我的日志记录,我还使用Serilog.Sinks.AzureTableStorage个包,更具体地说是WriteTo.AzureTableStorageWithProperties,它接受​​了类型为propertyColumns的{​​{1}}参数。

无论我尝试了什么,我都无法使它工作,以便我可以在string[]中传递一个字符串数组(或者使用我的环境变量中的冒号分隔语法)。

我尝试在appsettings.json中执行类似的操作:

appsettings.json

但我收到错误消息WriteTo: [ // ... { "Name": "AzureTableStorageWithProperties", "Args": { // ... "propertyColumns": [ "Column1", "Column2" ] } } ]

我尝试了这个:Argument value should be of type Action<>,但是这个还吹了(但是因为它是一个不同的代码路径,所以会出现不同类型的错误。)

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

"propertyColumns": "Column1, Column2"

但是,再一次没有运气:(

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

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

1 个答案:

答案 0 :(得分:0)

根据您的要求,我按如下方式定义了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" ]
  }
}

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

Getting "Argument value should be of type Action<>." with the below appSetting.json

Configuration from appsettings.json

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