web-dev-qa-db-ja.com

環境変数を使用してASP.NET Core構成配列設定をオーバーライドする方法

LT; DR

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

配列で設定を指定するための形式は何ですか?

34
James Skimming

デバッガーで構成を確認した後、答えが見つかりました。

Serilog:WriteTo:0:Args:path

したがって、配列インデックス(ゼロベース)を名前であるかのように使用する必要があります。

役立つ場合のデバッガーのスクリーンショットの下にも(コメントの Victor Hurdugaci に感謝)、 ユニットテスト は例を探すのに適した場所です。

configuration in the debugger

40
James Skimming