Example #1
0
 /**
  * 产生一条日志
  * 占位符使用'{}'
  * {@inheritDoc}
  * @see \es\libraries\Psr\Log\LoggerInterface::log()
  */
 public function log($level, $message, array $context = [])
 {
     $file = $this->filePath($level);
     $msg = '';
     switch ($level) {
         case LogLevel::DEBUG:
             // 调试可以打印对象
             ob_start();
             var_dump($message);
             $message = ob_get_contents();
             ob_end_clean();
         case LogLevel::ERROR:
             // 堆栈情况
             $debugs = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
             $trace = '';
             foreach ($debugs as $i => $t) {
                 if ($i > 1 && $i < count($debugs) - 4) {
                     empty($t['file']) && ($t['file'] = '控制器' . $t['class']);
                     $_line = '**';
                     for ($j = 0; $j < $i; $j++) {
                         $_line .= '>';
                     }
                     $trace .= $_line . $t['file'] . ',' . (empty($t['line']) ? '' : $t['line'] . '行,') . '方法' . $t['function'] . PHP_EOL;
                 }
             }
             $message = '【' . TimeStatic::formatTime() . '】' . PHP_EOL . $message . PHP_EOL . $trace . PHP_EOL . PHP_EOL;
             break;
         case LogLevel::ALERT:
             // 报警
             $message = '【' . TimeStatic::formatTime() . '】' . PHP_EOL . $message . PHP_EOL . PHP_EOL;
         default:
             $message = $this->interpolate($message, $context);
             break;
     }
     FileStatic::write($message, $file);
 }