ASP.NET Coreアプリでは、appsettings.json
設定のコレクションを構成するためにJSON配列を使用する構成ファイル。
環境変数を使用して配列オブジェクトの1つの設定をオーバーライドするにはどうすればよいですか?
背景
ASP.NETコアアプリケーションで serilog を使用し、 Serilog.Settings.Configuration を使用して、appsettings.json
。
設定は次のとおりです。
{
"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"
}
}
}
デプロイされたとき、いくつかの設定をオーバーライドしたいMinimumLevel、およびログファイルへのパス。私の優先オプションは、Azure App Serviceにデプロイするときに環境変数を使用してこれを行うことです。そのため、Azure管理ポータル(これらは環境変数として認識されます)を介してApp設定を使用します。
次の名前の環境変数を追加することで、MinimumLevelを簡単に設定できます:Serilog:MinimumLevel
およびアプリケーション名Serilog:Properties:Application
。
配列で設定を指定するための形式は何ですか?
デバッガーで構成を確認した後、答えが見つかりました。
Serilog:WriteTo:0:Args:path
したがって、配列インデックス(ゼロベース)を名前であるかのように使用する必要があります。
役立つ場合のデバッガーのスクリーンショットの下にも(コメントの Victor Hurdugaci に感謝)、 ユニットテスト は例を探すのに適した場所です。