/** * @param string $level * @param string $message * @param array $context * * @return static */ public function log($level, $message, $context) { $traces = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2); $location = ''; if (isset($traces[1])) { $trace = $traces[1]; if (isset($trace['file'], $trace['line'])) { $location = str_replace($this->alias->get('@app'), '', str_replace('\\', '/', $trace['file'])) . ':' . $trace['line']; } } if (Text::contains($message, '%')) { $replaces = []; foreach ($context as $k => $v) { $replaces['%' . $k . '%'] = $v; } $message = strtr($message, $replaces); } $context['level'] = $level; $context['date'] = time(); $context['location'] = $location; $eventData = ['level' => $level, 'message' => $message, 'context' => $context]; $this->fireEvent('logger:log', $eventData); if ($this->_s2i[$level] > $this->_s2i[$this->_level]) { return $this; } $this->adapter->log($level, $message, $context); return $this; }