public static function handleError($err_level, $err_message, $err_file, $err_line, $err_context) { // 不在error_reporting 里的非用户非致命错误级别不做处理 isset(self::$_error_reporting) || (self::$_error_reporting = error_reporting()); if (!(self::$_error_reporting & $err_level) && !in_array($err_level, array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE))) { return; } if (IS_DEBUG) { self::$_errors[] = '==== handleError ===='; self::$_errors[] = array('level' => $err_level, 'message' => $err_message, 'file' => $err_file, 'line' => $err_line, 'context' => $err_context); } // 转换为相对路径,降低log 长度=。=! $err_file = str_replace(APPLICATION_PATH, '', $err_file); switch ($err_level) { case E_USER_ERROR: case E_RECOVERABLE_ERROR: Core_Log::getInstance()->error("{$err_message} LEVEL:{$err_level} FILE:{$err_file} LINE:{$err_line}"); // 终止运行,故在此输出错误信息 self::showErrors(); exit; break; default: Core_Log::getInstance()->warn("{$err_message} LEVEL:{$err_level} FILE:{$err_file} LINE:{$err_line}"); } }