package com.dianping.pigeon.config; import com.dianping.pigeon.config.file.PropertiesFileConfigManager; import com.dianping.pigeon.extension.ExtensionLoader; import com.dianping.pigeon.log.Log4j2Logger; import com.dianping.pigeon.log.Logger; import com.dianping.pigeon.log.LoggerLoader; public class ConfigManagerLoader { private static ConfigManager configManager = ExtensionLoader.getExtension(ConfigManager.class); private static final Logger logger = LoggerLoader.getLogger(ConfigManagerLoader.class); private static final String KEY_LOG_DEBUG_ENABLE = "pigeon.log.debug.enable"; static { if (configManager == null) { configManager = new PropertiesFileConfigManager(); } logger.info("config manager:" + configManager); configManager.init(); initLoggerConfig(); } private static void initLoggerConfig() { try { Log4j2Logger.setDebugEnabled(configManager.getBooleanValue(KEY_LOG_DEBUG_ENABLE, false)); } catch (RuntimeException e) { } ConfigManagerLoader.getConfigManager().registerConfigChangeListener(new InnerConfigChangeListener()); } private static class InnerConfigChangeListener implements ConfigChangeListener { @Override public void onKeyUpdated(String key, String value) { if (key.endsWith(KEY_LOG_DEBUG_ENABLE)) { try { Log4j2Logger.setDebugEnabled(Boolean.valueOf(value)); } catch (RuntimeException e) { } } } @Override public void onKeyAdded(String key, String value) { } @Override public void onKeyRemoved(String key) { } } public static ConfigManager getConfigManager() { return configManager; } }