diff --git a/calendar_utils/management/commands/update_callendars.py b/calendar_utils/management/commands/update_callendars.py
index a66e95aacdf70875987e8ba833b68e4445401886..e837549834b9b47486aa9e4ad6c9d6a12a94318c 100644
--- a/calendar_utils/management/commands/update_callendars.py
+++ b/calendar_utils/management/commands/update_callendars.py
@@ -1,7 +1,11 @@
+import logging
+
 from django.core.management.base import BaseCommand
 
 from ...models import Calendar
 
+logger = logging.getLogger(__name__)
+
 
 class Command(BaseCommand):
     def handle(self, *args, **options):
@@ -12,7 +16,7 @@ class Command(BaseCommand):
                 cal.update_source()
                 self.stdout.write("+ ok")
             except Exception as e:
-                # TODO logging
+                logger.error("Calendar update failed for %s", cal.url, exc_info=True)
                 self.stdout.write("- failed")
                 self.stdout.write(str(e))
 
diff --git a/calendar_utils/models.py b/calendar_utils/models.py
index 4a072cda0aff77ae2f365ceaffb2246d30b62786..b16d21378cf7478461bf648500fef989f009410d 100644
--- a/calendar_utils/models.py
+++ b/calendar_utils/models.py
@@ -1,3 +1,4 @@
+import logging
 from datetime import date, timedelta
 
 import arrow
@@ -7,6 +8,8 @@ from icalevnt import icalevents
 
 from .parser import process_event_list
 
+logger = logging.getLogger(__name__)
+
 
 def _convert_arrow_to_datetime(event):
     event["start"] = event["start"].datetime
@@ -86,11 +89,18 @@ class CalendarMixin(models.Model):
                     self.calendar.save()
             else:
                 self.calendar = Calendar.objects.create(url=self.calendar_url)
-            self.calendar.update_source()
+
+            try:
+                self.calendar.update_source()
+            except:
+                logger.error(
+                    "Calendar update failed for %s", self.calendar.url, exc_info=True
+                )
 
         # delete related Calendar when URL is cleared
         if not self.calendar_url and self.calendar:
-            self.calendar.delete()
+            # TODO handle revisions and maybe other live pages with the same calendar
+            # self.calendar.delete()
             self.calendar = None
 
         super().save(*args, **kwargs)