PHP code example of benycode / slim-request-logger-middleware

1. Go to this page and download the library: Download benycode/slim-request-logger-middleware library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

benycode / slim-request-logger-middleware example snippets


use BenyCode\Slim\RequestLoggerMiddleware\RequestLogMiddleware;
use BenyCode\Slim\RequestLoggerMiddleware\ResponseLogMiddleware;
use BenyCode\Slim\RequestLoggerMiddleware\RequestLog\FileSystemLog;

return [
    ......
    LoggerFactory::class => function (ContainerInterface $container) {
        return new ... ; // use PSR-3 logger
    },
    RequestLogMiddleware::class => function (ContainerInterface $container) {

        $logger = $container->get(LoggerFactory::class)
            ->addFileHandler('requests.log')
            ->createLogger();

        $requestLog = new FileSystemLog($logger);

        return new RequestLogMiddleware($requestLog);
    },
    ResponseLogMiddleware::class => function (ContainerInterface $container) {

        $logger = $container->get(LoggerFactory::class)
            ->addFileHandler('requests.log')
            ->createLogger();

        $requestLog = new FileSystemLog($logger);

        return new ResponseLogMiddleware($requestLog);
    },
];

use BenyCode\Slim\RequestLoggerMiddleware\RequestLogMiddleware;
use BenyCode\Slim\RequestLoggerMiddleware\ResponseLogMiddleware;

$app
  ->add(ResponseLogMiddleware::class)
  ->add(RequestLogMiddleware::class)
  ->add(RKA\Middleware\IpAddress::class)
  ;

use BenyCode\Slim\RequestLoggerMiddleware\RequestLog;

final class AnyLogClass implements RequestLog
{
    public function __construct(
        ...
    ) {
    }

    public function logRequest(string $requestId, ServerRequestInterface $request): void
    {
        $requestData = RequestTransformer::transformRequestData($request); // you can use the own request data transformer
        
        ... // do something with the request log data
    }

    public function logResponse(ServerRequestInterface $request, ResponseInterface $response): void
    {
        $responseData = ResponseTransformer::transformResponsetData($request, $response); // you can use the own response data transformer

        ... // do something with the response log data
    }
}

use BenyCode\Slim\RequestLoggerMiddleware\RequestLogMiddleware;
use BenyCode\Slim\RequestLoggerMiddleware\ResponseLogMiddleware;
use BenyCode\Slim\RequestLoggerMiddleware\RequestLog\FileSystemLog;
use ....\AnyLogClass;
return [
    ......
    RequestLogMiddleware::class => function (ContainerInterface $container) {

        $requestLog = new AnyLogClass(....);

        return new RequestLogMiddleware($requestLog);
    },
    ResponseLogMiddleware::class => function (ContainerInterface $container) {

        $requestLog = new AnyLogClass(....);

        return new ResponseLogMiddleware($requestLog);
    },
];