public function recordEventStart()
    {
        try {
            $this->scheduler = Scheduler::firstOrNew(['mutex' => $this->mutexName()]);

            if (! $this->scheduler->exists) {
                $this->scheduler->fill([
                    'schedule' => $this->expression,
                    'command' => $this->getCommandName(),
                    'timezone' => $this->timezone,
                    'run_in_background' => $this->runInBackground,
                    'without_overlapping' => $this->withoutOverlapping,
                    'on_one_server' => $this->onOneServer,
                    'next_run_due' => $this->getNextRunDue($this->expression, $this->timezone),
                    'next_check_due' => $this->getNextCheckDue($this->expression, $this->timezone),
                ]);
            } else {
                $this->scheduler->fill([
                    'last_run' => date("Y-m-d H:i:s"),
                    'next_run_due' => $this->getNextRunDue($this->expression, $this->timezone),
                    'next_check_due' => $this->getNextCheckDue($this->expression, $this->timezone),
                ]);
            }
            $this->scheduler->save();

            $this->history = History::create([
                'scheduler_id' => $this->scheduler->id,
                'expected_completion' => $this->determineExpectedCompletion($this->scheduler),
            ]);
        } catch (Exception $e) {
            app(Eye::class)->logger()->error('Unable to track scheduler',
                                             $e->getMessage(),
                                             ['expresison' => $this->expression,
                                              'command_name' => $this->getCommandName()]);
        }

        $this->start = microtime(true);
        $this->exitcode = 1;
    }