diff --git a/src/finam/interfaces.py b/src/finam/interfaces.py
index ceb8a774f29a631942b52c028c81e5e9feeb77a8..d12be145e06b430562ba5c240b6fee5fb1578332 100644
--- a/src/finam/interfaces.py
+++ b/src/finam/interfaces.py
@@ -39,6 +39,10 @@ class ComponentStatus(Enum):
 class Loggable(ABC):
     """Loggable component."""
 
+    @abstractmethod
+    def __init__(self):
+        self._logger = None
+
     @property
     @abstractmethod
     def uses_base_logger_name(self):
@@ -52,7 +56,15 @@ class Loggable(ABC):
     @property
     def logger(self):
         """Logger for this component."""
-        return logging.getLogger(self.logger_name)
+        if self._logger is None:
+            if (
+                self.uses_base_logger_name
+                and hasattr(self, "base_logger_name")
+                and getattr(self, "base_logger_name") is None
+            ):
+                return logging.getLogger(self.logger_name)
+            self._logger = logging.getLogger(self.logger_name)
+        return self._logger
 
 
 class IComponent(ABC):
diff --git a/src/finam/modules/debug.py b/src/finam/modules/debug.py
index 7ca6598475d2f15a6646b39964f1a30c559b45f6..d2ad2e5477650459f633923c20ed0b0546631e9c 100644
--- a/src/finam/modules/debug.py
+++ b/src/finam/modules/debug.py
@@ -6,7 +6,6 @@ from ..data import tools
 from ..interfaces import ComponentStatus, IInput
 from ..sdk import CallbackInput, Component, TimeComponent
 from ..tools.date_helper import is_timedelta
-from ..tools.log_helper import ErrorLogger
 
 
 class DebugConsumer(TimeComponent):
@@ -73,11 +72,10 @@ class DebugConsumer(TimeComponent):
     ):
         super().__init__()
 
-        with ErrorLogger(self.logger):
-            if not isinstance(start, datetime):
-                raise ValueError("Start must be of type datetime")
-            if not is_timedelta(step):
-                raise ValueError("Step must be of type timedelta or relativedelta")
+        if not isinstance(start, datetime):
+            raise ValueError("Start must be of type datetime")
+        if not is_timedelta(step):
+            raise ValueError("Step must be of type timedelta or relativedelta")
 
         self._strip_data = strip_data
         self._log_data = None
@@ -212,7 +210,6 @@ class DebugPushConsumer(Component):
 
     def __init__(self, inputs, callbacks=None, log_data=False, strip_data=True):
         super().__init__()
-
         self._strip_data = strip_data
         self._log_data = None
         if isinstance(log_data, bool):
diff --git a/src/finam/modules/generators.py b/src/finam/modules/generators.py
index 538ac9ee447ab0ccb72c69c7da0d5a5a3c5c70ec..78a0635de17e4b2144f314e65a057854a961f63b 100644
--- a/src/finam/modules/generators.py
+++ b/src/finam/modules/generators.py
@@ -6,7 +6,6 @@ from finam.interfaces import ComponentStatus
 
 from ..sdk import Component, TimeComponent
 from ..tools.date_helper import is_timedelta
-from ..tools.log_helper import ErrorLogger
 
 
 class CallbackGenerator(TimeComponent):
@@ -54,11 +53,11 @@ class CallbackGenerator(TimeComponent):
 
     def __init__(self, callbacks, start, step):
         super().__init__()
-        with ErrorLogger(self.logger):
-            if not isinstance(start, datetime):
-                raise ValueError("Start must be of type datetime")
-            if not is_timedelta(step):
-                raise ValueError("Step must be of type timedelta or relativedelta")
+
+        if not isinstance(start, datetime):
+            raise ValueError("Start must be of type datetime")
+        if not is_timedelta(step):
+            raise ValueError("Step must be of type timedelta or relativedelta")
 
         self._callbacks = callbacks
         self._step = step
diff --git a/src/finam/schedule.py b/src/finam/schedule.py
index 9f34e3d5078491bfdbbf53ef28c300090a7878a1..d575ca4ef78a20a9b9644d1569b760e4585d5d73 100644
--- a/src/finam/schedule.py
+++ b/src/finam/schedule.py
@@ -83,6 +83,7 @@ class Composition(Loggable):
         log_level=logging.INFO,
         mpi_rank=0,
     ):
+        super().__init__()
         # setup logger
         self._logger_name = logger_name
         self.logger.setLevel(log_level)
diff --git a/src/finam/sdk/component.py b/src/finam/sdk/component.py
index 20ccdb469a1998a816e75a60e559ad85ba7d5972..49e792242c86d5f8d22230f4ea4bf27b76de1ca6 100644
--- a/src/finam/sdk/component.py
+++ b/src/finam/sdk/component.py
@@ -42,6 +42,7 @@ class Component(IComponent, Loggable, ABC):
     """
 
     def __init__(self):
+        Loggable.__init__(self)
         self._status = ComponentStatus.CREATED
         self._inputs = IOList(self, "INPUT")
         self._outputs = IOList(self, "OUTPUT")
@@ -445,7 +446,7 @@ class TimeComponent(ITimeComponent, Component, ABC):
     """
 
     def __init__(self):
-        super().__init__()
+        Component.__init__(self)
         self._time = None
 
     @property
diff --git a/src/finam/sdk/input.py b/src/finam/sdk/input.py
index 9c695fe5164621f99f51193753792a9053159a7e..2a4881d2e9d7acba1dbe4ad241aed0385de5d3bf 100644
--- a/src/finam/sdk/input.py
+++ b/src/finam/sdk/input.py
@@ -15,6 +15,7 @@ class Input(IInput, Loggable):
     """Default input implementation."""
 
     def __init__(self, name, info=None, static=False, **info_kwargs):
+        Loggable.__init__(self)
         self.source = None
         self.base_logger_name = None
         if name is None:
diff --git a/src/finam/sdk/output.py b/src/finam/sdk/output.py
index 5cdb5016f34abf2e00b1cef6e493124fc668c3fa..f146d3fff7ccb8c585cbc6d432ae592973231e00 100644
--- a/src/finam/sdk/output.py
+++ b/src/finam/sdk/output.py
@@ -23,6 +23,7 @@ class Output(IOutput, Loggable):
     """Default output implementation."""
 
     def __init__(self, name=None, info=None, static=False, **info_kwargs):
+        Loggable.__init__(self)
         self.targets = []
         self.data = []
         self._output_info = None
diff --git a/src/finam/tools/connect_helper.py b/src/finam/tools/connect_helper.py
index 8e11f3ce816431cab54249c975a9684da1dde9f4..dd33a7a965e43c703746191bfe6757161390583c 100644
--- a/src/finam/tools/connect_helper.py
+++ b/src/finam/tools/connect_helper.py
@@ -119,6 +119,7 @@ class ConnectHelper(Loggable):
         out_info_rules=None,
         cache=True,
     ):
+        super().__init__()
 
         self.base_logger_name = logger_name
         self._inputs = inputs