diff --git a/mlair/helpers/datastore.py b/mlair/helpers/datastore.py
index d6c977c717c5ef869fdba517fb36fcd55cfe3961..85de021e21deb93b481905a80e4a69ff9774b418 100644
--- a/mlair/helpers/datastore.py
+++ b/mlair/helpers/datastore.py
@@ -111,8 +111,15 @@ class TrackParameter:
         """
         Call method of decorator.
         """
-        self.track(*args)
-        return self.__wrapped__(*args, **kwargs)
+        name, obj, scope = self.track(*args)
+        f_name = self.__wrapped__.__name__
+        try:
+            res = self.__wrapped__(*args, **kwargs)
+            logging.debug(f"{f_name}: {name}({scope})={res if obj is None else obj}")
+        except Exception as e:
+            logging.debug(f"{f_name}: {name}({scope})={obj}")
+            raise
+        return res
 
     def __get__(self, instance, cls):
         """Create bound method object and supply self argument to the decorated method. <Python Cookbook, p.347>"""
@@ -120,13 +127,13 @@ class TrackParameter:
 
     def track(self, tracker_obj, *args):
         name, obj, scope = self._decrypt_args(*args)
-        logging.debug(f"{self.__wrapped__.__name__}: {name}({scope})={obj}")
         tracker = tracker_obj.tracker[-1]
         new_entry = {"method": self.__wrapped__.__name__, "scope": scope}
         if name in tracker:
             tracker[name].append(new_entry)
         else:
             tracker[name] = [new_entry]
+        return name, obj, scope
 
     @staticmethod
     def _decrypt_args(*args):