簡體   English   中英

Azure 應用配置重新加載失敗時如何記錄錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM