docstr: Print the message about current and maximal memory consumption to the log or console.
  :param logger: optional logger that should be used in output.
  :param additional_info: label for current location in code.
  :param logging_level: level of the message
  :return: text of the message.
code: def log(
      cls,
      logger: Optional[logging.LoggerAdapter] = None,
      additional_info: str = "location",
      logging_level: int = logging.INFO,
  ) -> str:
      """
      Print the message about current and maximal memory consumption to the log or console.
      :param logger: optional logger that should be used in output.
      :param additional_info: label for current location in code.
      :param logging_level: level of the message
      :return: text of the message.
      """
      message = ""
      if cls.is_active:
          memory_consumption = cls.get_measures()
          message = (
              f"Memory consumption for {additional_info} in {cls.active_session_label} session: "
              f"current {round(memory_consumption[0], 1)} MiB, "
              f"max: {round(memory_consumption[1], 1)} MiB"
          )
          if logger is None:
              logger = default_log(prefix=cls.__name__)
          logger.log(logging_level, message)
      return message
  
file_path: FEDOT/fedot/utilities/memory.py
imports: import logging
  import tracemalloc
  from typing import Optional
  from golem.core.log import default_log
label_desc: Use image node_id 4 for calling the MemoryAnalytics obj's underlying member method code with example usage: obj.log(cls, logger, additional_info, logging_level) and returns: message