/** * 产生一条日志 * 占位符使用'{}' * {@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); }