diff --git a/src/Laritor.php b/src/Laritor.php index 4002e6f..9a5ae40 100644 --- a/src/Laritor.php +++ b/src/Laritor.php @@ -13,7 +13,7 @@ class Laritor { - public const VERSION = '3.0.6'; + public const VERSION = '3.0.7'; /** * @var array @@ -161,13 +161,13 @@ public function addEvents($name, $events) public function addCustomLog(string $type, string $level, string $message, array $context = [], ?Carbon $written_at = null) { $this->hasCustomLogs = true; - $this->events[LogRecorder::$eventType][] = [ + $this->pushEvent(LogRecorder::$eventType, [ 'level' => $level, 'message' => $message, 'log_context' => $context, 'occurred_at' => $written_at ? $written_at->format('Y-m-d H:i:s') : now()->format('Y-m-d H:i:s'), 'context' => $type - ]; + ]); } public static function addCustomEvent($name, $meta = []) diff --git a/src/Recorders/OutboundRequestRecorder.php b/src/Recorders/OutboundRequestRecorder.php index 22655c3..b42b71f 100644 --- a/src/Recorders/OutboundRequestRecorder.php +++ b/src/Recorders/OutboundRequestRecorder.php @@ -88,25 +88,19 @@ public function completeOutboundRequest($outboundRequestEvent) ->map(function ($request) use ($outboundRequestEvent){ if ( $request['status'] === 'sent' && $request['url'] === $outboundRequestEvent->request->url() ) { - $duration = $request['started_at']->diffInMilliseconds(); - return [ - 'started_at' => $request['started_at']->format('Y-m-d H:i:s'), - 'completed_at' => now()->format('Y-m-d H:i:s'), - 'duration' => $duration, - 'code' => $outboundRequestEvent instanceof ResponseReceived ? $outboundRequestEvent->response->status() : 0, - 'url' => $outboundRequestEvent->request->url(), - 'method' => $outboundRequestEvent->request->method(), - 'status' => 'completed', - 'order' => $request['order'], - 'context' => $request['context'], - 'request' => [ - 'body' => $this->getRequestBody($outboundRequestEvent->request), - 'headers' => $this->getRequestHeaders($outboundRequestEvent->request), - ], - 'response' => [ - 'body' => $outboundRequestEvent instanceof ConnectionFailed ? false : $this->getResponseBody($outboundRequestEvent->response), - 'headers' => $outboundRequestEvent instanceof ConnectionFailed ? false : $this->getResponseHeaders($outboundRequestEvent->response), - ] + $started = $request['started_at']; + $request['started_at'] = $started->format('Y-m-d H:i:s'); + $request['completed_at'] = now()->format('Y-m-d H:i:s'); + $request['duration'] = $started->diffInMilliseconds(); + $request['code'] = $outboundRequestEvent instanceof ResponseReceived ? $outboundRequestEvent->response->status() : 0; + $request['status'] = 'completed'; + $request['request'] = [ + 'body' => $this->getRequestBody($outboundRequestEvent->request), + 'headers' => $this->getRequestHeaders($outboundRequestEvent->request), + ]; + $request['response'] = [ + 'body' => $outboundRequestEvent instanceof ConnectionFailed ? false : $this->getResponseBody($outboundRequestEvent->response), + 'headers' => $outboundRequestEvent instanceof ConnectionFailed ? false : $this->getResponseHeaders($outboundRequestEvent->response), ]; } diff --git a/src/Recorders/ScheduledTaskRecorder.php b/src/Recorders/ScheduledTaskRecorder.php index d1a5456..6632a0d 100644 --- a/src/Recorders/ScheduledTaskRecorder.php +++ b/src/Recorders/ScheduledTaskRecorder.php @@ -64,17 +64,23 @@ public function start(ScheduledTaskStarting $event) $event = $event->task; - $scheduler = $this->laritor->getEvents(SchedulerRecorder::$eventType); - - $this->laritor->pushEvent(static::$eventType, [ - 'scheduled_at' => $scheduler[0]['started_at']->startOfMinute()->format('Y-m-d H:i:s'), - 'started_at' => now(), + $payload = [ 'task' => $event instanceof CallbackEvent ? 'Closure' : $event->command, + 'started_at' => now(), 'expression' => $event->expression, 'timezone' => $event->timezone, 'user' => $event->user, - 'status' => 'started' - ]); + 'status' => 'started', + 'scheduled_at_timestamp' => microtime(true), + ]; + + $scheduler = $this->laritor->getEvents(SchedulerRecorder::$eventType); + + if (isset($scheduler[0]['timestamp'])) { + $payload['scheduled_at_timestamp'] = $scheduler[0]['timestamp']; + } + + $this->laritor->pushEvent(static::$eventType, $payload); } /** @@ -97,20 +103,25 @@ public function skip(ScheduledTaskSkipped $event) { $event = $event->task; - $scheduler = $this->laritor->getEvents(SchedulerRecorder::$eventType); - - $this->laritor->pushEvent(static::$eventType, [ - 'scheduled_at' => $scheduler[0]['started_at']->startOfMinute()->format('Y-m-d H:i:s'), + $payload = [ 'started_at' => now()->format('Y-m-d H:i:s'), - 'completed_at' => now()->format('Y-m-d H:i:s'), 'duration' => 0, 'task' => $event instanceof CallbackEvent ? 'Closure' : $event->command, 'expression' => $event->expression, 'timezone' => $event->timezone, 'user' => $event->user, 'status' => 'skipped', - 'custom_context' => DataHelper::getRedactedContext() - ]); + 'custom_context' => DataHelper::getRedactedContext(), + 'scheduled_at_timestamp' => microtime(true), + ]; + + $scheduler = $this->laritor->getEvents(SchedulerRecorder::$eventType); + + if (isset($scheduler[0]['timestamp'])) { + $payload['scheduled_at_timestamp'] = $scheduler[0]['timestamp']; + } + + $this->laritor->pushEvent(static::$eventType, $payload); $this->sendEvents(); }