Dans une application ASP.NET Core, j'ai un appsettings.json
fichier de configuration qui utilise un tableau JSON pour configurer une collection de paramètres.
Comment remplacer un paramètre d'un des objets du tableau à l'aide de variables d'environnement?
Contexte
J'utilise serilog dans une application principale ASP.NET et j'utilise Serilog.Settings.Configuration , pour lui permettre d'être configuré à l'aide de appsettings.json
.
La configuration est comme ceci:
{
"Serilog": {
"Using": ["Serilog.Sinks.Literate"],
"MinimumLevel": "Debug",
"WriteTo": [
{ "Name": "File", "Args": { "path": "%TEMP%\\Logs\\serilog-configuration-sample.txt" } }
],
"Enrich": ["FromLogContext", "WithMachineName", "WithThreadId"],
"Properties": {
"Application": "Sample"
}
}
}
Une fois déployé, je souhaite remplacer certains paramètres, par exemple le MinimumLevel, et le chemin d'accès au fichier journal. Mon option préférée est de le faire via des variables d'environnement lors du déploiement sur un Azure App Service, donc j'utiliserai les paramètres de l'application via le portail de gestion Azure (ceux-ci sont réalisés en tant que variables d'environnement).
Je peux facilement définir le MinimumLevel en ajoutant une variable d'environnement avec le nom: Serilog:MinimumLevel
et le nom de l'application Serilog:Properties:Application
.
Quel est le format pour spécifier un paramètre avec un tableau?
Après avoir regardé la configuration dans le débogueur, j'ai trouvé la réponse.
Serilog:WriteTo:0:Args:path
J'ai donc besoin d'utiliser l'index du tableau (basé sur zéro) comme s'il s'agissait d'un nom.
Sous la capture d'écran du débogueur au cas où cela aiderait, également (grâce à Victor Hurdugaci dans les commentaires), les tests unitaires sont un bon endroit pour chercher des exemples.