diff --git a/README.md b/README.md index d148210..97d6427 100755 --- a/README.md +++ b/README.md @@ -119,6 +119,8 @@ return [ Tochka\JsonRpc\Middleware\LogMiddleware::class => [ // Канал лога, в который будут записываться все логи 'channel' => 'default', + // Заголовки которые нужно писать в лог + 'headers' => ['accept', 'encoding'] ], Tochka\JsonRpc\Middleware\TokenAuthMiddleware::class => [ 'headerName' => 'X-Tochka-Access-Key', diff --git a/config/jsonrpc.php b/config/jsonrpc.php index d95d7ff..1017c86 100755 --- a/config/jsonrpc.php +++ b/config/jsonrpc.php @@ -71,6 +71,13 @@ // 'App\\Http\\TestController1@method' => ['password', 'data.phone_number'], // 'App\\Http\\TestController2' => ['password', 'data.phone_number'] //] + /** + * Заголовки которые необходимо логировать + */ + //'headers' => [ + // 'accept', + // 'encoding' + //] ], TokenAuthMiddleware::class => [ 'headerName' => 'X-Tochka-Access-Key', diff --git a/src/Middleware/LogMiddleware.php b/src/Middleware/LogMiddleware.php index 7dcba9e..6d0b3aa 100644 --- a/src/Middleware/LogMiddleware.php +++ b/src/Middleware/LogMiddleware.php @@ -2,6 +2,7 @@ namespace Tochka\JsonRpc\Middleware; +use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; use Tochka\JsonRpc\Helpers\ArrayHelper; use Tochka\JsonRpc\Helpers\LogHelper; @@ -9,8 +10,14 @@ class LogMiddleware { - public function handle(JsonRpcRequest $request, $next, string $channel = 'default', array $hideParams = []) - { + public function handle( + JsonRpcRequest $request, + $next, + Request $httpRequest, + string $channel = 'default', + array $hideParams = [], + array $headers = [] + ) { $logContext = [ 'id' => $request->getId(), ]; @@ -31,6 +38,10 @@ public function handle(JsonRpcRequest $request, $next, string $channel = 'defaul $rules = array_merge($globalRules, $controllerRules, $methodRules); $logRequest['params'] = LogHelper::hidePrivateData((array) ($request->getRawRequest()->params ?? []), $rules); } + + if (!empty($headers)) { + $logContext['headers'] = $this->addHeaders($httpRequest, $headers); + } Log::channel($channel)->info('New request', $logContext + ['request' => $logRequest]); @@ -49,4 +60,14 @@ public function handle(JsonRpcRequest $request, $next, string $channel = 'defaul return $result; } + + protected function addHeaders(Request $httpRequest, array $headers = []): array + { + $result = []; + foreach ($headers as $header) { + $result[$header] = $httpRequest->header($header); + } + + return $result; + } }