diff --git a/app/common/Implement/Log/PDOFormatter.php b/app/common/Implement/Log/Formatter/PDO.php similarity index 86% rename from app/common/Implement/Log/PDOFormatter.php rename to app/common/Implement/Log/Formatter/PDO.php index b3f9282..64662ba 100644 --- a/app/common/Implement/Log/PDOFormatter.php +++ b/app/common/Implement/Log/Formatter/PDO.php @@ -1,10 +1,10 @@ container->get(ServerRequestInterface::class); + $serverFilters = [ + 'HTTP_', + 'QUERY_', + 'REDIRECT_', + 'REMOTE_', + 'REQUEST_', + ]; + $serverParams = array_filter($request->getServerParams(), + fn($key) => count(array_filter($serverFilters, fn($prefix) => str_starts_with($key, $prefix))) > 0, + ARRAY_FILTER_USE_KEY); + $record->extra['request'] = [ + 'server' => $serverParams, + 'headers' => $request->getHeaders(), + ]; + return $record; + } +} diff --git a/app/common/Implement/Log/UserProcessor.php b/app/common/Implement/Log/Processor/User.php similarity index 81% rename from app/common/Implement/Log/UserProcessor.php rename to app/common/Implement/Log/Processor/User.php index 4c41508..3ecbe74 100644 --- a/app/common/Implement/Log/UserProcessor.php +++ b/app/common/Implement/Log/Processor/User.php @@ -1,11 +1,11 @@ has('ENVIRONMENT') and $container->get('ENVIRONMENT') === 'development') ? (new Monolog\Handler\StreamHandler('/logs/notices.log')) ->setFormatter($container->get(Monolog\Formatter\LineFormatter::class)) - : (new Incoviba\Common\Implement\Log\MySQLHandler($container->get(Incoviba\Common\Define\Connection::class))) - ->setFormatter(new Incoviba\Common\Implement\Log\PDOFormatter()), + : (new Incoviba\Common\Implement\Log\Handler\MySQL($container->get(Incoviba\Common\Define\Connection::class))) + ->setFormatter(new \Incoviba\Common\Implement\Log\Formatter\PDO()), Monolog\Level::Notice, Monolog\Level::Warning, false ) ], [ - $container->get(Incoviba\Common\Implement\Log\UserProcessor::class), + $container->get(Incoviba\Common\Implement\Log\Processor\User::class), $container->get(Monolog\Processor\IntrospectionProcessor::class), $container->get(Monolog\Processor\WebProcessor::class), $container->get(Monolog\Processor\MemoryUsageProcessor::class), @@ -69,6 +70,7 @@ return [ return new Monolog\Logger('access', [ new Monolog\Handler\RedisHandler($container->get(Predis\ClientInterface::class), 'logs:access'), ], [ + $container->get(Incoviba\Common\Implement\Log\Processor\Request::class), $container->get(Monolog\Processor\IntrospectionProcessor::class), $container->get(Monolog\Processor\WebProcessor::class), $container->get(Monolog\Processor\MemoryUsageProcessor::class), diff --git a/app/src/Middleware/Authentication.php b/app/src/Middleware/Authentication.php index 514a582..b885396 100644 --- a/app/src/Middleware/Authentication.php +++ b/app/src/Middleware/Authentication.php @@ -24,8 +24,18 @@ class Authentication if ($this->service->isIn() or $this->isValid($request)) { return $handler->handle($request); } + $serverFilters = [ + 'HTTP_', + 'QUERY_', + 'REDIRECT_', + 'REMOTE_', + 'REQUEST_', + ]; + $serverParams = array_filter($request->getServerParams(), + fn($key) => count(array_filter($serverFilters, fn($prefix) => str_starts_with($key, $prefix))) > 0, + ARRAY_FILTER_USE_KEY); $this->logger->notice("Not logged in.", [ - 'Server' => $request->getServerParams(), + 'Server' => $serverParams, 'Headers' => $request->getHeaders(), ]); $response = $this->responseFactory->createResponse(307, 'Not logged in') diff --git a/app/src/Middleware/NotAllowed.php b/app/src/Middleware/NotAllowed.php index c412722..0f78374 100644 --- a/app/src/Middleware/NotAllowed.php +++ b/app/src/Middleware/NotAllowed.php @@ -19,8 +19,18 @@ class NotAllowed try { return $handler->handle($request); } catch (HttpMethodNotAllowedException $exception) { + $serverFilters = [ + 'HTTP_', + 'QUERY_', + 'REDIRECT_', + 'REMOTE_', + 'REQUEST_', + ]; + $serverParams = array_filter($request->getServerParams(), + fn($key) => count(array_filter($serverFilters, fn($prefix) => str_starts_with($key, $prefix))) > 0, + ARRAY_FILTER_USE_KEY); $this->logger->warning($exception, [ - 'Server' => $request->getServerParams(), + 'Server' => $serverParams, 'Headers' => $request->getHeaders(), ]); $response = $this->responseFactory->createResponse(405, 'Method Not Allowed'); diff --git a/app/src/Middleware/NotFound.php b/app/src/Middleware/NotFound.php index de03c34..e245805 100644 --- a/app/src/Middleware/NotFound.php +++ b/app/src/Middleware/NotFound.php @@ -21,8 +21,18 @@ class NotFound return $handler->handle($request); } catch (HttpNotFoundException | EmptyRedis | EmptyResult | Read | Create | Update | Delete $exception) { + $serverFilters = [ + 'HTTP_', + 'QUERY_', + 'REDIRECT_', + 'REMOTE_', + 'REQUEST_', + ]; + $serverParams = array_filter($request->getServerParams(), + fn($key) => count(array_filter($serverFilters, fn($prefix) => str_starts_with($key, $prefix))) > 0, + ARRAY_FILTER_USE_KEY); $this->logger->notice($exception, [ - 'Server' => $request->getServerParams(), + 'Server' => $serverParams, 'Headers' => $request->getHeaders(), ]); $response = $this->responseFactory->createResponse(404, 'Not Found');