How do I make CloudConfigurationManager.GetSetting less verbose?

后端 未结 8 1379
天命终不由人
天命终不由人 2021-01-04 01:05

I\'m currently using CloudConfigurationManager.GetSetting(\"setting\") to get settings for my application, but it\'s writing logs of everything it\'s checking to the console

8条回答
  •  没有蜡笔的小新
    2021-01-04 01:40

    Not really. If you look at the code of the underlying GetValue method you'll see this:

    private static string GetValue(string providerName, string settingName, Func getValue)
    {
      string str1 = getValue(settingName);
      string str2;
      if (str1 != null)
        str2 = string.Format((IFormatProvider) CultureInfo.InvariantCulture, "PASS ({0})", new object[1]
        {
          (object) str1
        });
      else
        str2 = "FAIL";
      Trace.WriteLine(string.Format((IFormatProvider) CultureInfo.InvariantCulture, "Getting \"{0}\" from {1}: {2}.", (object) settingName, (object) providerName, (object) str2));
      return str1;
    }
    

    The Trace.WriteLine is always called without taking into account Debug or Release. Now you can simply remove the Default listener which should suppress all messages:

      
        
          
            
          
        
      
    

    Now if you look at the CloudConfigurationManager it doesn't do that much. If this is a problem for you you can cook up something yourself, starting with this:

            if (RoleEnvironment.IsAvailable)
                return RoleEnvironment.GetConfigurationSettingValue(setting);
            else
                return ConfigurationManager.AppSettings[setting];
    

    Note: The CloudConfigurationManager does a lot more than this, like loading the assembly without assembly reference.

提交回复
热议问题