Apollo 구성 센터 동적 새로 고침 로그 수준

1896 단어

Apollo 구성 센터 동적 새로 고침 로그 수준

  • 2차 설정을 추가한 후 apollo에서 로그 레벨을 조정하면 서버를 다시 시작할 필요가 없습니다. 곧 적용됩니다
  • /**
     *  apollo 
     * @author: nj
     * @date: 2019/1/21: 5:00
     */
    @Configuration
    public class LogListenerConfig {
        private static final Logger logger = LoggerFactory.getLogger(LoggerConfiguration.class);
        /**
         *  , , 
         */
        private static final String LOGGER_TAG = "loggers.root.";
    
        @Autowired
        private LoggingSystem loggingSystem;
    
        /**
         *  namespace,  application namespace
         */
        @ApolloConfig
        private Config config;
    
        @ApolloConfigChangeListener
        private void onChange(ConfigChangeEvent changeEvent) {
            refreshLoggingLevels();
        }
    
        @PostConstruct
        private void refreshLoggingLevels() {
            Set keyNames = config.getPropertyNames();
            for (String key : keyNames) {
                if (containsIgnoreCase(key, LOGGER_TAG)) {
                    String strLevel = config.getProperty(key, "info");
                    LogLevel level = LogLevel.valueOf(strLevel.toUpperCase());
                    // , 
                    //loggingSystem.setLogLevel(key.replace(LOGGER_TAG, ""), level);
                    loggingSystem.setLogLevel("", level);
                    logger.info("{}:{}", key, strLevel);
                }
            }
        }
    
        private static boolean containsIgnoreCase(String str, String searchStr) {
            if (str == null || searchStr == null) {
                return false;
            }
            int len = searchStr.length();
            int max = str.length() - len;
            for (int i = 0; i <= max; i++) {
                if (str.regionMatches(true, i, searchStr, 0, len)) {
                    return true;
                }
            }
            return false;
        }
    }

    다음으로 전송:https://www.cnblogs.com/KevinStark/p/10333160.html

    좋은 웹페이지 즐겨찾기