我正在尝试使用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 下添加您的问题。