RequestHandledListener.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. /*
  3. * This file is part of the Jiannei/laravel-logger.
  4. *
  5. * (c) Jiannei <longjian.huang@foxmail.com>
  6. *
  7. * This source file is subject to the MIT license that is bundled
  8. * with this source code in the file LICENSE.
  9. */
  10. namespace App\Listeners;
  11. use Jiannei\Logger\Laravel\Events\RequestHandledEvent;
  12. use Symfony\Component\HttpFoundation\Response as SymfonyResponse;
  13. class RequestHandledListener
  14. {
  15. public function handle(RequestHandledEvent $event)
  16. {
  17. $start = $event->request->server('REQUEST_TIME_FLOAT');
  18. $end = microtime(true);
  19. $request = $event->request->all();
  20. if ($files = $event->request->allFiles()) {
  21. foreach ($files as $key => $uploadedFile) {
  22. $request[$key] = [
  23. 'originalName' => $uploadedFile->getClientOriginalName(),
  24. 'mimeType' => $uploadedFile->getClientMimeType(),
  25. ];
  26. }
  27. }
  28. $context = [
  29. 'request' => $request,
  30. 'response' => $event->response instanceof SymfonyResponse ? json_decode($event->response->getContent(), true) : (string)$event->response,
  31. 'start' => $start,
  32. 'end' => $end,
  33. 'duration' => format_duration($end - $start),
  34. ];
  35. logger_async(\config('logging.request.message'), $context)
  36. ->onConnection(\config('logging.request.connection'))
  37. ->onQueue(\config('logging.request.queue'));
  38. }
  39. }