class_docstr: Base class for loggers.
  
  Strategy loggers receive MetricValues from the Evaluation plugin and
  decide when and how to log them. MetricValues are processed
  by default using `log_metric` and `log_single_metric`.
  
  Additionally, loggers may implement any callback's handlers supported by
  the plugin's system of the template in use, which will be called
  automatically during the template's execution.
  This allows to control when the logging happen and how. For example,
  interactive loggers typically prints at the end of an
  epoch/experience/stream.
  
  Each child class should implement the `log_single_metric` method, which
  logs a single MetricValue.
docstr: Receive a list of MetricValues to log.
  
  This method is called whenever new metrics are available.
  
  :param metric_values: list of MetricValues to log.
  :param callback: The name of the callback (event) during which the
      metric value was collected.
  :return: None
docstr_tok: ["Receive","a","list","of","MetricValues","to","log",".","This","method","is","called","whenever","new","metrics","are","available",".",":","param","metric_values",":","list","of","MetricValues","to","log",".",":","param","callback",":","The","name","of","the","callback","(","event",")","during","which","the","metric","value","was","collected",".",":","return",":","None"]
code: def log_metrics(self, metric_values: List["MetricValue"]) -> None:
      """Receive a list of MetricValues to log.
  
      This method is called whenever new metrics are available.
  
      :param metric_values: list of MetricValues to log.
      :param callback: The name of the callback (event) during which the
          metric value was collected.
      :return: None
      """
      for mval in metric_values:
          name = mval.name
          value = mval.value
          x_plot = mval.x_plot
  
          if isinstance(value, dict):
              for k, v in value.items():
                  n = f"{name}/{k}"
                  self.log_single_metric(n, v, x_plot)
          else:
              self.log_single_metric(name, value, x_plot)
  
file_path: avalanche/avalanche/logging/base_logger.py
imports: from abc import ABC
  from typing import TYPE_CHECKING, List
  from avalanche.distributed.distributed_helper import DistributedHelper
label_desc: Use image node_id 3 for calling the BaseLogger obj's underlying member method code with example usage: obj.log_metrics(metric_values) without return types