code: def write(self, log):
      run = self.experiment
  
      _log = log
      log = log.strip().split()
      if log:
          if len(log) == 3 and log[1] == "=":
              run[log[0]] = self._to_number(log[2])
              return
  
          value_learn = None
          value_iter = None
          value_test = None
          value_best = None
  
          if log[1] == "learn:":
              value_iter = int(log[0][:-1])
              value_learn = self._to_number(log[2])
              if log[3] == "test:":
                  value_test = self._to_number(log[4])
                  if log[5] == "best:":
                      value_best = self._to_number(log[6])
          if any((value_learn, value_test, value_best)):
              if value_learn:
                  run.track(
                      value_learn,
                      name=self._loss_function,
                      step=value_iter,
                      context={"log": "learn"},
                  )
              if value_test:
                  run.track(
                      value_test,
                      name=self._loss_function,
                      step=value_iter,
                      context={"log": "test"},
                  )
              if value_best:
                  run.track(
                      value_best,
                      name=self._loss_function,
                      step=value_iter,
                      context={"log": "best"},
                  )
          else:
              # Unhandled or junky log
              pass
  
      if self._log_cout:
          self._log_cout.write(_log)
  
file_path: aim/aim/sdk/adapters/catboost.py
imports: from sys import stdout
  from typing import Optional
  from aim import Run
  from aim.ext.resource import DEFAULT_SYSTEM_TRACKING_INT
label_desc: Use image node_id 5 for calling the AimLogger obj's underlying member method code with example usage: obj.write(log) without return types