public LoggingProvider load() {
    // 1: use LOGGING_PROVIDER_NAME_PROPERTY if set
    LoggingProvider providerFromSystemProperty = checkSystemProperty();
    if (providerFromSystemProperty != null) {
      logger.info("Using {} from System Property {} for service {}",
          providerFromSystemProperty.getClass().getName(), LOGGING_PROVIDER_NAME_PROPERTY,
          LoggingProvider.class.getName());
      return providerFromSystemProperty;
    }

    // 2: use ListCollectingServiceLoader and select highest priority
    SortedMap<Integer, LoggingProvider> loggingProviders = new TreeMap<>();
    loadServiceProviders()
        .forEach(provider -> loggingProviders.put(provider.getPriority(), provider));

    if (!loggingProviders.isEmpty()) {
      LoggingProvider providerFromServiceLoader = loggingProviders.get(loggingProviders.lastKey());
      logger.info("Using {} from ServiceLoader for service {}",
          providerFromServiceLoader.getClass().getName(), LoggingProvider.class.getName());
      return providerFromServiceLoader;
    }

    // 3: use SimpleLoggingProvider
    logger.info("Using {} for service {}", SimpleLoggingProvider.class.getName(),
        LoggingProvider.class.getName());
    return new SimpleLoggingProvider();
  }
System property that may be used to override which {@code LoggingProvider} to use.
geode-core/src/main/java/org/apache/geode/logging/internal/LoggingProviderLoader.java