code: private synchronized void updateEffectiveLevel(ClassLoader loader)
    {
      if (loader == null)
        loader = _systemClassLoader;
  
      int oldEffectiveLevel = getEffectiveLevel(loader);
      
      Level newEffectiveLevel = calculateEffectiveLevel(loader);
  
      /*
      if (loader == _systemClassLoader) {
        _finestEffectiveLevel = newEffectiveLevel;
        _finestEffectiveLevelValue = newEffectiveLevel.intValue();
        super.setLevel(_finestEffectiveLevel);
      }
      */
      
      if (oldEffectiveLevel == newEffectiveLevel.intValue()
          && loader != _systemClassLoader)
        return;
      
      _finestEffectiveLevel = newEffectiveLevel;
      _hasLocalEffectiveLevel = false;
      
      updateEffectiveLevelPart(_systemClassLoader);
      
      updateEffectiveLevelPart(loader);
          
      for (int i = 0; i < _loaders.size(); i++) {
        WeakReference<ClassLoader> loaderRef = _loaders.get(i);
        ClassLoader classLoader = loaderRef.get();
        
        if (classLoader != null)
          updateEffectiveLevelPart(classLoader);
      }
      
      super.setLevel(_finestEffectiveLevel);
          
      _finestEffectiveLevelValue = _finestEffectiveLevel.intValue();
  
      updateChildren();
    }
docs: Recalculate the dynamic assigned levels.