diff --git a/lib/classes/CronjobScheduler.class.php b/lib/classes/CronjobScheduler.class.php
index afc89f6de94b1960f174c3cd81e2d6b3930845e2..cc4cf8b0201524308077ea1fbe2ec5c3bbe21cd8 100644
--- a/lib/classes/CronjobScheduler.class.php
+++ b/lib/classes/CronjobScheduler.class.php
@@ -256,20 +256,19 @@ class CronjobScheduler
         }
 
         foreach ($schedules as $schedule) {
+            $log = new CronjobLog();
+            $log->schedule_id = $schedule->schedule_id;
+            $log->scheduled   = $schedule->next_execution;
+            $log->executed    = time();
+            $log->exception   = null;
+            $log->duration    = -1;
+
             try {
                 // Skip schedules with missing task classes
                 if (!$schedule->task->valid) {
                     throw new Exception(_('Die Klasse für den Cronjob-Task konnte nicht gefunden werden'));
                 }
 
-                $log = new CronjobLog();
-                $log->schedule_id = $schedule->schedule_id;
-                $log->scheduled   = $schedule->next_execution;
-                $log->executed    = time();
-                $log->exception   = null;
-                $log->duration    = -1;
-                $log->store();
-
                 // Start capturing output and measuring duration
                 ob_start();
                 $start_time = microtime(true);
@@ -286,6 +285,7 @@ class CronjobScheduler
                 $log->store();
             } catch (Exception $e) {
                 $log->exception = $e;
+                $log->store();
 
                 // Deactivate schedule
                 $schedule->deactivate();