Я создал простую функцию Azure с намерением использовать Serililog для входа в хранилище BLOB-объектов Azure.
При использовании встроенной конфигурации для приемника Serilog, который отлично работает, приемник создается, и Serilog с удовольствием переходит в хранилище BLOB-объектов.
Это работает:
Log.Logger = new LoggerConfiguration()
.WriteTo.AzureBlobStorage(
"STORAGEACCOUNT CONNECTION STRING", // <-- inline config
LogEventLevel.Information,
null,
"{yyyy}/{MM}/{dd}/MyLogFile.txt")
.CreateLogger();
Проблема в том, что я хотел бы настроить все это через appsettings.json
, но когда я пытаюсь это сделать (как локально в эмуляторе, так и в облаке), он не может связать настройки приемника, и в результате его не удается войти в хранилище блога.
Если я отлаживаюсь, я вижу, что значения конфигурации загружаются как положено в configuration
объект , но они не применяются к конфигурации ведения журнала.
Это не работает:
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
appsettings.json
в этом фрагменте:
{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Information"
}
},
"WriteTo": [{
"Name": "AzureBlobStorage",
"Args": {
"connectionString": " --- REPLACE WITH STORAGEACCOUNT BLOB CONNECTION STRING --- ",
"formatter": "Serilog.Formatting.Compact.RenderedCompactJsonFormatter, Serilog.Formatting.Compact",
"storageFileName": "{yyyy}/{MM}/{dd}/MyLogFile.txt",
"retainedFileCountLimit": 31
}
}
],
"Properties": {
"Application": "int-test-logging",
"Environment": "int"
}
}
}
Я не уверен, что делаю неправильно, но любая помощь будет признательна. Следующий репозиторий github содержит код для реализации вышеупомянутого (оба подхода) и воспроизводит это поведение. https://github.com/oneiltomlinson/AzureFunctionsLogging