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;
}