我有一个配置为在Docker容器中运行的dot net core 3.1应用程序。
虽然我已经使用docker -e
标志设法更新了简单的appsettings配置,但是对于一些复杂的配置(例如serilog配置),我仍然感到困惑。
appsettings文件:
{
"AllowedHosts": "*",
"ConnectionStrings": {
"DefaultConnection": "Host=172.18.101.65;Port=5432;Username=postgres;Password=pgadmin;Database=identityserver;"
},
"Serilog": {
"Using": [],
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"Enrich": [ "FromLogContext", "WithMachineName", "WithProcesssId", "WithThreadId" ],
"WriteTo": [
{
"Name": "Console"
},
{
"Name": "File",
"Args": {
"path": "D:\\Logs\\IDSvr\\Log-.txt",
"outputTemplate": "{Timestamp:G} {Message}{NewLine:1}{Exception:1}",
"rollingInterval": "Day",
"shared": true
}
},
{
"Name": "Seq",
"Args": {
"serverUrl": "http://localhost:8081"
}
}
]
},
.
.
.
}
我可以使用
-e ConnectionStrings__DefaultConnection="..."
标志更新连接字符串,但不确定如何更新Serilog
的WriteTo
配置部分。
最佳答案
WriteTo
是一个复杂的对象array
。因此,您必须指定要覆盖的索引。假设您要覆盖:
"Serilog": {
"WriteTo": [
{
"Name": "Console" // this value
},
...
由于数组中的索引为0,因此可以通过
-e Serilog__WriteTo__0__Name
选择键。然后只需将其传递给想要的值即可,例如-e Serilog__WriteTo__0__Name=something
。若要读取.NET Core
Configuration
中的确切值,请在启动管道中使用Configuration["Serilog:WriteTo:0:Name"]
。
关于docker - asp net core docker serilog配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61998472/