code: static Level resolveLevel(Props props, String... propertyKeys) {
      Level newLevel = Level.INFO;
      for (String propertyKey : propertyKeys) {
        Level level = getPropertyValueAsLevel(props, propertyKey);
        if (level != null) {
          newLevel = level;
        }
      }
      return newLevel;
    }
docs: Resolve a log level reading the value of specified properties.
  <p>
  To compute the applied log level the following rules will be followed:
  <ul>the last property with a defined and valid value in the order of the {@code propertyKeys} argument will be applied</ul>
  <ul>if there is none, {@link Level#INFO INFO} will be returned</ul>
  </p>
  
  @throws IllegalArgumentException if the value of the specified property is not one of {@link #ALLOWED_ROOT_LOG_LEVELS}