如何在Azure App Configuration重载失败时记录错误
问题:捕获Azure App Configuration动态配置刷新失败的错误日志
场景说明
我正在使用启用轮询模式的Azure App Configuration动态配置,希望在配置因密钥保管库引用错误等任何原因重载失败时记录错误信息。
以下是我添加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());
但这个回调仅在配置实际发生更改时才会触发,无法捕获配置刷新失败的情况并记录错误。
内容的提问来源于stack exchange,提问作者Oleksandr Torianyk
相关产品推荐
相关产品推荐

