Skip to content

Commit

Permalink
Merge pull request #32 from tochka-developers/v4-log-middleware-allow…
Browse files Browse the repository at this point in the history
…-headres-log

Возможность логировать заголовки запроса, при необходимости
  • Loading branch information
darkdarin authored Jul 31, 2023
2 parents f477148 + 605816c commit e127515
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 2 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
7 changes: 7 additions & 0 deletions config/jsonrpc.php
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
25 changes: 23 additions & 2 deletions src/Middleware/LogMiddleware.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,22 @@

namespace Tochka\JsonRpc\Middleware;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Tochka\JsonRpc\Helpers\ArrayHelper;
use Tochka\JsonRpc\Helpers\LogHelper;
use Tochka\JsonRpc\Support\JsonRpcRequest;

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(),
];
Expand All @@ -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]);

Expand All @@ -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;
}
}

0 comments on commit e127515

Please sign in to comment.