diff --git a/README.md b/README.md index 3fab477..6c7e48e 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,6 @@ return [ return [ 'app' => env('APP_NAME'), 'log_path' => "/logs/rpc-".date("Y-m-d").".log",//rpc日志路径 - 'log_formatter' => \App\Logging\LogstashFormatter::class, //rpc日志格式 // json rpc server 配置 'server' => [ 'name' => env('APP_NAME'), diff --git a/src/Client.php b/src/Client.php index 3510189..f34ba43 100644 --- a/src/Client.php +++ b/src/Client.php @@ -95,7 +95,7 @@ class Client try { $headers = [ - 'x-client-app' => $this->config['app'], + 'X-Client-App' => $this->config['app'], ]; app('rpc.logger')->info("client_request",array_merge($this->server_config, $payload)); $resp = $this->http->request('POST', 'rpc/json-rpc-v2.json', [ diff --git a/src/Logging/LogstashFormatter.php b/src/Logging/LogstashFormatter.php index e485fce..6c54a59 100644 --- a/src/Logging/LogstashFormatter.php +++ b/src/Logging/LogstashFormatter.php @@ -24,12 +24,12 @@ class LogstashFormatter extends NormalizerFormatter public function format(array $record) { $record = parent::format($record); - $message = array( '@timestamp' => $record['datetime'], 'host' => $this->hostname, 'app' => env('APP_NAME'), 'env' => app()->environment(), + 'client_app' => app('request')->header('X-Client-App'), ); $request_id = app('request')->header('X-Request-Id'); @@ -41,6 +41,9 @@ class LogstashFormatter extends NormalizerFormatter // $message['channel'] = $record['channel']; // } + if (isset($record['x-client-app'])) { + $message['client_app'] = $record['x_client_app']; + } if (isset($record['level_name'])) { $message['level'] = $record['level_name']; } diff --git a/src/Server/JsonRpcServer.php b/src/Server/JsonRpcServer.php index adc3817..1131403 100644 --- a/src/Server/JsonRpcServer.php +++ b/src/Server/JsonRpcServer.php @@ -61,8 +61,7 @@ class JsonRpcServer if (!$this->isEnoughParameter($class, $function, $params)) { return $this->error(self::Rpc_Error_Invalid_Params); } - - app('rpc.logger')->info('server', [$id, $class,$method, $params, $this->request->header('x-client-app')]); + app('rpc.logger')->info('server', [$id, $class,$method, $params]); $ret = call_user_func_array([(new $class($id, $this->request)), $function], $params); app('rpc.logger')->info('server_result', [$id, $ret]); diff --git a/src/Server/JsonRpcServer.php.bak b/src/Server/JsonRpcServer.php.bak deleted file mode 100644 index c1910bc..0000000 --- a/src/Server/JsonRpcServer.php.bak +++ /dev/null @@ -1,145 +0,0 @@ - 'Method not found', - self::Rpc_Error_Parse_Error => 'Json parse error', - self::Rpc_Error_Invalid_Request => 'Invalid request', - self::Rpc_Error_Invalid_Params => 'Invalid params', - self::Rpc_Success => 'Success' - ]; - - /** - * @var Request - */ - public $request; - - public function __construct($config) - { - $this->config = $config; - $this->request = function_exists('app') ? app('request') : Request::capture(); - - $this->map = require_once $config['map']; - } - - public function handler() - { - if ($this->request->getContentType() != 'json') { - return $this->error(self::Rpc_Error_Invalid_Request); - } - - try { - - if ($this->request->method() == Request::METHOD_GET) { - $method = $this->request->input('method'); - $id = $this->request->input('id'); - $params = \GuzzleHttp\json_decode($this->request->input('params'),true); - } else { - list($method, $params, $id) = $this->parseJson($this->request->getContent()); - } - - list($class, $function) = $this->parseMethodWithMap($method); - - if (!class_exists($class) || !method_exists($class, $function)) { - return $this->error(self::Rpc_Error_NOT_FOUND); - } - - if (!$this->isEnoughParameter($class, $function, $params)) { - return $this->error(self::Rpc_Error_Invalid_Params); - } - - app('rpc.logger')->info('server', [$id, $class,$method, $params, $this->request->header('x-client-app')]); - $ret = call_user_func_array([(new $class($id, $this->request)), $function], $params); - app('rpc.logger')->info('server_result', [$id, $ret]); - - return JsonResponse::create($ret); - - } catch (\InvalidArgumentException $e) { - return $this->error(self::Rpc_Error_Parse_Error); - } - } - - protected function parseJson($data) - { - $data = \GuzzleHttp\json_decode($data, true); - $method = $data['method']; - $params = $data['params']; - $id = $data['id']; - return [$method, $params, $id]; - } - - protected function parseMethodWithMap($method) - { - return isset($this->map[$method]) ? $this->map[$method] : ['', '']; - } - - /** - * thisis - * @param string $method 参数名称 - * @return array 返回结果 - */ - protected function parseMethod($method) - { - $method = explode('.', $method); - - if (count($method) < 2) { - return ['', '']; - } - - $function = array_pop($method); - $class = 'Rpc' . ucwords(array_pop($method)); - - foreach ($method as $one) { - $class = ucwords($one) . '\\' . $class; - } - - $class = "App\Rpc\\$class"; - return [$class, $function]; - } - - - protected function isEnoughParameter($class, $method, $parameters) - { - $r = new \ReflectionMethod($class, $method); - $params = $r->getParameters(); - $n = 0; - foreach ($params as $param) { - //$param is an instance of ReflectionParameter - if (!$param->isOptional()) { - $n++; - } - } - return count($parameters) >= $n; - } - - protected function error($code, $msg = null, $id = null) - { - if ($msg === null) { - $msg = isset(self::ErrorMsg[$code]) ? self::ErrorMsg[$code] : 'undefined'; - } - - return JsonResponse::create([ - 'jsonrpc' => '2.0', - 'error' => [ - 'code' => $code, - 'message' => $msg, - ], - 'id' => $id - ]); - } -} \ No newline at end of file