使用 .NET Core 3.1 并导入 nuget 包https://github.com/huorswords/Microsoft.Extensions.Logging.Log4Net.AspNetCore产生了一个非常规定的 appSettings.json。例如
{
"env": {
"name: "dev"
},
"Log4NetCore": {
"Name": "Test",
"LoggerRepository": "Fantastic",
"OverrideCriticalLevelWith": "Fatal",
"Watch": false,
"UseWebOrAppConfig": false,
"PropertyOverrides": [
{
"XPath": "/log4net/appender[@name='RollingFile']/file",
"Attributes": {
"Value": "overridedFileName.log"
}
},
{
"XPath": "/log4net/appender[@name='RollingFile']/maximumFileSize",
"Attributes": {
"Value": "200KB"
}
},
{
"XPath": "/log4net/appender[@name='RollingFile']/file"
}
]
}
}
在 AWS ECS 容器中,我们在需要时覆盖 appsettings,但这是通过与 json 中的路径对应的名称完成的:
{
...
"secrets": [
{
"name": "env:name",
"valueFrom": "<<ARN>>"
}
]
...
}
如您所见,现在的难点在于获取 Log4NetCore 设置的正确路径:
{
...
"secrets": [
{
"name": "Log4NetCore:PropertyOverrides:<<?????>>",
"valueFrom": "<<ARN>>"
}
]
...
}
有没有办法使用 name + valueFrom 中的数组甚至使用 xpath 来处理这个问题?