getMessage(), $e->getFile(), $e->getLine(), ], JSON_UNESCAPED_UNICODE); $stackList = array_slice($e->getTrace(), 0, 10); $stackList = self::getStackTree($stackList); $msg .= ' [ stack ] ' . json_encode($stackList); if (strstr($e->getMessage(), 'module not exists:')) { return self::toError($e->getCode(), $msg, 'info'); } else { return self::toError($e->getCode(), $msg, 'error'); } } /** * 堆栈参数处理 * @param $list * @return mixed */ public static function getStackTree($list) { foreach ($list as $index => $item) { if (array_key_exists('args', $item)) { foreach ($item['args'] as $arg_index => $arg_value) { if (is_array($arg_value)) { $arg_value = json_encode($arg_value, JSON_UNESCAPED_UNICODE); } if (is_string($arg_value) || is_numeric($arg_value)) { if (strlen($arg_value) > 200) { $item['args'][$arg_index] = 'length>200'; } } else { $item['args'][$arg_index] = 'mix'; } } $list[$index] = $item; } } return $list; } /** * 格式化错误返回值 * @param $error_code * @param $error_msg * @param string $level * @return array */ public static function toError($error_code, $error_msg, $level = 'error') { if (is_array($error_msg)) { $error_msg = json_encode($error_msg); } $return = ['error' => $error_code, 'msg' => $error_msg]; //将进程id写入日志,方便定位 self::log("[ errcode: $error_code ] [ errmsg: $error_msg ]", $level); return $return; } }