def METHOD_NAME(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.METHOD_NAME(_log)