Пример #1
0
 /**
  * @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;
 }