[英]How to log an error when Azure App Configuration reload fails
我正在使用 Azure 應用程序配置,並啟用了使用輪詢 model 的動態配置,如此處所述。 我的目標是在由於任何原因重新加載配置失敗時記錄一條錯誤消息,例如不正確的密鑰庫引用。 這是添加 Azure App Configuration 作為配置源的方法。
public static IConfigurationBuilder AddAppConfiguration(IConfigurationBuilder configurationBuilder, IEnumerable<string> filters)
{
if (!configurationBuilder.Sources.Any())
{
configurationBuilder.AddDefaultConfigurationSources();
}
var configuration = configurationBuilder.Build();
var appConfiguration = configuration.GetSection(AppConfiguration.ConfigurationKey)
.Get<AppConfiguration>();
if (appConfiguration?.IsEnabled == true)
{
if (appConfiguration.IsRedundancyEnabled)
configurationBuilder.AddAzureAppConfiguration(
options =>
{
ConfigureAppConfiguration(options, appConfiguration, appConfiguration.UrlSecondary, filters, appConfiguration.Label);
}, true);
configurationBuilder.AddAzureAppConfiguration(
options => { ConfigureAppConfiguration(options, appConfiguration, appConfiguration.Url, filters, appConfiguration.Label); },
true);
}
return configurationBuilder;
}
請注意, AddAzureAppConfiguration
中的optional
參數設置為true
。 這意味着如果配置刷新失敗,應用程序不會崩潰,只會繼續使用舊設置運行,我想保持這種行為。
如果配置沒有像這樣更改,我嘗試使用ChangeToken記錄錯誤:
configuration.GetReloadToken().RegisterChangeCallback(state =>
{
var reloadToken = state as IChangeToken;
if (reloadToken.HasChanged)
{
logger.Information("Configuration refresh successful");
}
else
{
logger.Error("Configuration refresh failed");
}
RegisterCallback(logger, configuration);
}, configuration.GetReloadToken());
但是回調只有在配置確實發生變化時才會被調用,至少我沒有設法讓它失敗並記錄錯誤。
如此處所述,當通過 DI 在ConfigureServices()
方法中調用services.AddAzureAppConfiguration()
時,將自動添加默認 ILoggerFactory。 我沒有看到日志,因為 Microsoft 最低日志級別設置為Error ,而如果TryRefreshAsync()
方法失敗,AzureAppConfigurationProvider 會記錄警告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.