public String build() {
    final List<String> lines = new ArrayList<>();
    lines.add("Besu version " + BesuVersionUtils.shortVersion());
    lines.add("");
    lines.add("Configuration:");

    // Don't include the default network if a genesis file has been supplied
    if (network != null && !hasCustomGenesis) {
      lines.add("Network: " + network);
    }

    if (hasCustomGenesis) {
      lines.add("Network: Custom genesis file");
      lines.add(
          customGenesisFileName == null ? "Custom genesis file is null" : customGenesisFileName);
    }

    if (networkId != null) {
      lines.add("Network Id: " + networkId);
    }

    if (profile != null) {
      lines.add("Profile: " + profile);
    }

    if (dataStorage != null) {
      lines.add("Data storage: " + dataStorage);
    }

    if (syncMode != null) {
      lines.add(
          "Sync mode: " + syncMode + (syncMode.equalsIgnoreCase("FAST") ? " (Deprecated)" : ""));
    }

    if (syncMinPeers != null) {
      lines.add("Sync min peers: " + syncMinPeers);
    }

    if (rpcHttpApis != null) {
      lines.add("RPC HTTP APIs: " + String.join(",", rpcHttpApis));
    }
    if (rpcPort != null) {
      lines.add("RPC HTTP port: " + rpcPort);
    }

    if (engineApis != null) {
      lines.add("Engine APIs: " + String.join(",", engineApis));
    }
    if (enginePort != null) {
      lines.add("Engine port: " + enginePort);
    }
    if (engineJwtFilePath != null) {
      lines.add("Engine JWT: " + engineJwtFilePath);
    }

    lines.add("Using " + txPoolImplementation + " transaction pool implementation");

    lines.add("Using " + worldStateUpdateMode + " worldstate update mode");

    if (isLimitTrieLogsEnabled) {
      final StringBuilder trieLogPruningString = new StringBuilder();
      trieLogPruningString
          .append("Limit trie logs enabled: retention: ")
          .append(trieLogRetentionLimit);
      if (trieLogsPruningWindowSize != null) {
        trieLogPruningString.append("; prune window: ").append(trieLogsPruningWindowSize);
      }
      lines.add(trieLogPruningString.toString());
    }

    if (isSnapServerEnabled) {
      lines.add("Experimental Snap Sync server enabled");
    }

    if (isHighSpec) {
      lines.add("Experimental high spec configuration enabled");
    }

    if (isHistoryExpiryPruneEnabled) {
      lines.add("History expiry prune enabled");
    }

    if (blobDBSettings != null && blobDBSettings.isBlockchainGarbageCollectionEnabled()) {
      lines.add("Experimental BlobDB BLOCKCHAIN Garbage Collection enabled");
    }
    if (hasCustomBlobDBSettings()) {
      final StringBuilder blobDBString = new StringBuilder();
      blobDBString.append("Experimental BlobDB GC ");
      if (blobDBSettings.blobGarbageCollectionAgeCutoff().isPresent()) {
        blobDBString
            .append("age cutoff: ")
            .append(blobDBSettings.blobGarbageCollectionAgeCutoff().get())
            .append("; ");
      }
      if (blobDBSettings.blobGarbageCollectionForceThreshold().isPresent()) {
        blobDBString
            .append("force threshold: ")
            .append(blobDBSettings.blobGarbageCollectionForceThreshold().get());
      }
      lines.add(blobDBString.toString());
    }

    lines.add("");
    lines.add("Host:");

    lines.add("Java: " + PlatformDetector.getVM());
    lines.add("Maximum heap size: " + normalizeSize(Runtime.getRuntime().maxMemory()));
    lines.add("OS: " + PlatformDetector.getOS());

    if (SystemInfo.getCurrentPlatform() == PlatformEnum.LINUX) {
      final String glibcVersion = PlatformDetector.getGlibc();
      if (glibcVersion != null) {
        lines.add("glibc: " + glibcVersion);
      }

      detectJemalloc(lines);
    }

    final HardwareAbstractionLayer hardwareInfo = new SystemInfo().getHardware();

    lines.add("Total memory: " + normalizeSize(hardwareInfo.getMemory().getTotal()));
    lines.add("CPU cores: " + hardwareInfo.getProcessor().getLogicalProcessorCount());

    lines.add("");

    if (besuPluginContext != null) {
      lines.addAll(besuPluginContext.getPluginsSummaryLog());
    }

    return FramedLogMessage.generate(lines);
  }
Build configuration overview.

@return the string representing configuration overview
app/src/main/java/org/hyperledger/besu/cli/ConfigurationOverviewBuilder.java