2016-06-06 6 views
11

LT;DRКак переопределить настройки массива конфигурации ASP.N Co, используя переменные среды

В приложении ASP.NET ядра У меня есть файл appsettings.json конфигурации, который использует массив JSON для настройки набора параметров.

Как переопределить параметр одного из объектов массива, используя переменные среды?

фон

Я использую serilog в основном приложении ASP.NET и с помощью 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, поэтому я буду использовать настройки приложения через портал управления Azure (они реализуются как переменные среды).

можно легко установить MinimumLevel путем добавления переменной окружения с именем: Serilog:MinimumLevel и имя приложения Serilog:Properties:Application.

Каков формат задания параметра с помощью массива?

+1

У меня была такая же проблема - я не мог стоять магию имен, двоеточиями и индексов массива (Serilog: WriteTo: 0: ARGS: путь) и пару месяцев назад я написал новый поставщик конфигурации упростить эту конфигурацию - https://github.com/dsbenghe/NotMicrosoft.Configuration – Dumitru

ответ

15

После просмотра конфигурации в отладчике я нашел ответ.

Serilog:WriteTo:0:Args:path

Так мне нужно использовать индекс массива (с нуля), как если бы это было имя.

Внизу снимок экрана отладчика, если это помогает, также (спасибо Victor Hurdugaci в комментариях), unit tests - хорошее место для поиска примеров.

configuration in the debugger

+5

Тестирование - еще одно замечательное место для поиска примеров: https://github.com/aspnet/Configuration/blob/dev/test/ Microsoft.Extensions.Configuration.Binder.Test/ConfigurationCollectionBindingTests.cs –

+2

@VictorHurdugaci Ссылка мертва. Вот обновленный: https://github.com/aspnet/Configuration/blob/6cc477ed493e5b0da3c8f609488d667dc65a5576/test/Config.Binder.Test/ConfigurationCollectionBindingTests.cs –

+0

@ jaanus-varus Может быть, но в ответе нет, поскольку я использовала ссылку на основе тега release. –