src/Debug/Debug.php
protected function appendLog($method, $args = array(), $meta = array())
    {
        if (!$this->cfg['collect']) {
            return;
        }
        $cfgRestore = array();
        $meta = \array_merge(
            array('channel' => $this->cfg['channel']),
            $meta,
            $this->internal->getMetaVals($args)
        );
        if (isset($meta['cfg'])) {
            $cfgRestore = $this->config->setCfg($meta['cfg']);
            unset($meta['cfg']);
        }
        foreach ($args as $i => $v) {
            if ($this->abstracter->needsAbstraction($v)) {
                $args[$i] = $this->abstracter->getAbstraction($v, $method);
            }
        }
        $event = $this->eventManager->publish(
            'debug.log',
            $this,
            array(
                'method' => $method,
                'args' => $args,
                'meta' => $meta,
                'appendLog' => true,
                'return' => null,
            )
        );
        if ($cfgRestore) {
            $this->config->setCfg($cfgRestore);
        }
        if (!$event->getValue('appendLog')) {
            return $event->getValue('return');
        }
        if ($this->parentInstance) {
            return $this->parentInstance->appendLog(
                $event->getValue('method'),
                $event->getValue('args'),
                $event->getValue('meta')
            );
        }
        $this->rootInstance->logRef[] = array(
            $event->getValue('method'),
            $event->getValue('args'),
            \array_diff_assoc($event->getValue('meta'), array(
                'channel' => $this->cfg['channel'],
            )),
        );
        return $event->getValue('return');
    }
protected function appendLog($method, $args = array(), $meta = array())
    {
        if (!$this->cfg['collect']) {
            return;
        }
        $cfgRestore = array();
        $meta = \array_merge(
            array('channel' => $this->cfg['channel']),
            $meta,
            $this->internal->getMetaVals($args)
        );
        if (isset($meta['cfg'])) {
            $cfgRestore = $this->config->setCfg($meta['cfg']);
            unset($meta['cfg']);
        }
        foreach ($args as $i => $v) {
            if ($this->abstracter->needsAbstraction($v)) {
                $args[$i] = $this->abstracter->getAbstraction($v, $method);
            }
        }
        $event = $this->eventManager->publish(
            'debug.log',
            $this,
            array(
                'method' => $method,
                'args' => $args,
                'meta' => $meta,
                'appendLog' => true,
                'return' => null,
            )
        );
        if ($cfgRestore) {
            $this->config->setCfg($cfgRestore);
        }
        if (!$event->getValue('appendLog')) {
            return $event->getValue('return');
        }
        if ($this->parentInstance) {
            return $this->parentInstance->appendLog(
                $event->getValue('method'),
                $event->getValue('args'),
                $event->getValue('meta')
            );
        }
        $this->rootInstance->logRef[] = array(
            $event->getValue('method'),
            $event->getValue('args'),
            \array_diff_assoc($event->getValue('meta'), array(
                'channel' => $this->cfg['channel'],
            )),
        );
        return $event->getValue('return');
    }
Store the arguments
if collect is false -> does nothing
otherwise:
+ abstracts values
+ publishes debug.log event
+ appends log (if event propagation not stopped)

@param string $method error, info, log, warn, etc
@param array  $args   arguments passed to method
@param array  $meta   meta data

@return void