123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- <?php
- /*
- * This file is part of the Jiannei/laravel-logger.
- *
- * (c) Jiannei <longjian.huang@foxmail.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
- namespace App\Listeners;
- use Symfony\Component\HttpFoundation\Response as SymfonyResponse;
- class RequestHandledListener
- {
- public function handle($event)
- {
- $url = $event->request->server('REQUEST_URI');
- if (strpos($url, "/admin/") !== 0) return;
- if (strtolower($event->request->server('REQUEST_METHOD')) === 'get') return;
- $start = $event->request->server('REQUEST_TIME_FLOAT');
- $end = microtime(true);
- $request = $event->request->all();
- if ($files = $event->request->allFiles()) {
- foreach ($files as $key => $uploadedFile) {
- $request[$key] = [
- 'originalName' => $uploadedFile->getClientOriginalName(),
- 'mimeType' => $uploadedFile->getClientMimeType(),
- ];
- }
- }
- $guard = config('logging.guard', false);
- $user = false;
- if ($guard) {
- $user = auth($guard)->user();
- if ($user) {
- $user = [
- 'id' => $user['id'],
- 'name' => $user['name'],
- 'username' => $user['username'],
- ];
- }
- }
- $context = [
- 'request' => $request,
- 'response' => $event->response instanceof SymfonyResponse ? json_decode($event->response->getContent(), true) : (string)$event->response,
- 'start' => $start,
- 'end' => $end,
- 'duration' => format_duration($end - $start),
- 'user' => $user ?? null,
- ];
- logger_async(\config('logging.request.message'), $context)
- ->onConnection(\config('logging.request.connection'))
- ->onQueue(\config('logging.request.queue'));
- }
- }
|