diff --git a/examples/example3/ChildProcess3.py b/examples/example3/ChildProcess3.py
index 402a19b1bce5d50e747266bb2f292b46aef0b97a..2e8f29e5a97b2b4e78effef68f0142c624240386 100644
--- a/examples/example3/ChildProcess3.py
+++ b/examples/example3/ChildProcess3.py
@@ -11,8 +11,6 @@ class ChildProcess3(cmp.CProcess):
         super().__init__(state_queue, cmd_queue, kill_flag, *args, **kwargs)
         self.logger = None
 
-    def postrun_init(self):
-        self.logger = self.create_new_logger(f"{self.__class__.__name__}-({os.getpid()})")
 
     @cmp.CProcess.register_signal()
     def test_call(self, a):
diff --git a/examples/example3/example3.py b/examples/example3/example3.py
index 92a890e251fe9b7d876a69924c830e46b41f9608..513402355aa7529345b6f38006995bfea36896b3 100644
--- a/examples/example3/example3.py
+++ b/examples/example3/example3.py
@@ -24,8 +24,8 @@ class Form(QDialog):
     def __init__(self, parent=None):
         super().__init__(parent)
 
-        child_con = ChildProcessControl3(self, internal_log=True, internal_log_level=logging.INFO, log_file="log.log")
-        child_con.set_internal_log_level(logging.WARNING)
+        child_con = ChildProcessControl3(self, internal_log_level=logging.WARNING, log_file="log.log")
+        child_con.set_internal_log_level(logging.INFO)
         child_con.mp_finished.connect(self.updateUI)
 
 
diff --git a/src/cmp/CBase.py b/src/cmp/CBase.py
index 49929e65482997a1aaceb5ff2b2f18130cdc1026..2bbef02ef8e21413c31a764219f9195fb27cb743 100644
--- a/src/cmp/CBase.py
+++ b/src/cmp/CBase.py
@@ -1,4 +1,5 @@
 import logging
+import time
 
 from rich.logging import RichHandler
 
@@ -16,32 +17,45 @@ class CBase:
     def create_new_logger(self, logger_name: str,
                           logger_handler: logging.Handler = None,
                           logger_format: str = "%(asctime)s - %(name)s %(message)s",
-                          to_file=None) -> (logging.Logger, logging.Handler):
+                          to_file=None,
+                          enabled=True, level=logging.DEBUG) -> logging.Logger:
         """
         Creates a new logger with the given name and handler. If no handler is given, a RichHandler will be used.
 
+        :param enabled:
         :param logger_name:
         :param logger_handler:
         :param logger_format:
         :param to_file:
         :return:
         """
+        formatter = logging.Formatter(logger_format)
         if logger_handler is None:
+            time.sleep(1)
             logger_handler = RichHandler(rich_tracebacks=True)
-        logger_handler.setLevel(logging.DEBUG)
+
+        logger_handler.setLevel(level)
+        logger_handler.setFormatter(formatter)
+
         _internal_logger = logging.getLogger(logger_name)
         _internal_logger.handlers = [logger_handler]
         _internal_logger.setLevel(logging.DEBUG)
-        formatter = logging.Formatter(logger_format)
-        logger_handler.setFormatter(formatter)
+
 
         if to_file is not None:
             _file_handler = logging.FileHandler(to_file)
             _file_handler.setLevel(logging.DEBUG)
-            _file_handler_formated = logging.Formatter(f"%(levelname)s > {logger_format})")
-            _file_handler.setFormatter(_file_handler_formated)
+            _file_handler_formatter = logging.Formatter(f"%(levelname)s {logger_format})")
+            _file_handler.setFormatter(_file_handler_formatter)
             _internal_logger.addHandler(_file_handler)
 
+        if enabled:
+            _internal_logger.disabled = False
+            _internal_logger.info(f"Logger {logger_name} created with handlers {_internal_logger.handlers} and has been enabled (Level {level}).")
+        else:
+            _internal_logger.info(f"Logger {logger_name} created and has been disabled.")
+            _internal_logger.disabled = True
+
         return _internal_logger
 
 
@@ -93,7 +107,7 @@ class CBase:
             elif level == logging.CRITICAL:
                 self._internal_logger.info(f"Internal log level of {self.__class__.__name__} has been set to CRITICAL.")
             else:
-                self._internal_logger.info(f"Internal log level of {self.__class__.__name__} has been set to {level}.")
+                self._internal_logger.info(f"Internal log level of {self.__class__.__name__} has been set to level {level}.")
             self._internal_logger.handlers[0].setLevel(level)
         else:
             raise Exception("Can't set internal log level. Internal logger not initialized")
diff --git a/src/cmp/CProcess.py b/src/cmp/CProcess.py
index d6165bbe761205468346a889e79b658c4d121c5a..acdebf42c6578922780647101f13c1c47d77cc0a 100644
--- a/src/cmp/CProcess.py
+++ b/src/cmp/CProcess.py
@@ -58,14 +58,15 @@ class CProcess(CBase, Process):
         self._internal_logger = self.create_new_logger(
             f"(cmp) {self.name}",
             logger_handler=logging.handlers.QueueHandler(self.state_queue),
-            logger_format="%(message)s")
-        self.internal_log_enabled = self._internal_log_enabled_
-        self.internal_log_level = self._internal_log_level_
-
+            logger_format="%(message)s",
+            to_file=self.log_file,
+            enabled=self._internal_log_enabled_, level=self._internal_log_level_)
 
         self.logger = self.create_new_logger(
             f"{os.getpid()}({self.__class__.__name__})",
-            logger_handler=logging.handlers.QueueHandler(self.state_queue))
+            logger_handler=logging.handlers.QueueHandler(self.state_queue),
+            logger_format="%(message)s",
+            to_file=self.log_file)
 
 
         self._internal_logger.debug(f"Child process {self.__class__.__name__} started.")
diff --git a/src/cmp/CProcessControl.py b/src/cmp/CProcessControl.py
index 865d7602e752a5631d21165deccbe0937675e21a..407e770b0614bcc044073c44471c57175a9e6992 100644
--- a/src/cmp/CProcessControl.py
+++ b/src/cmp/CProcessControl.py
@@ -24,21 +24,15 @@ class CProcessControl(CBase, QObject):
 
     def __init__(self, parent: QObject = None,
                  signal_class: QObject = None,
-                 internal_log: bool = False,
-                 internal_log_level: int = logging.DEBUG,
-                 log_file: str = None):
+                 internal_log: bool = True, internal_log_level: int = logging.WARNING, log_file: str = None):
         QObject.__init__(self, parent)
         CBase.__init__(self)
-        self.log_file = log_file
-        self._internal_logger = self.create_new_logger(
-            f"(cmp) {self.name}",
-            to_file=self.log_file)
-        self.logger = self.create_new_logger(
-            f"{self.__class__.__name__}({os.getpid()})",
-            to_file=self.log_file)
-        self.internal_log_enabled = internal_log
-        self.internal_log_level = internal_log_level
 
+        self.log_file = log_file
+        self._internal_logger = self.create_new_logger(f"(cmp) {self.name}",
+                                                       to_file=self.log_file, enabled=internal_log, level=internal_log_level)
+        self.logger = self.create_new_logger(f"{self.__class__.__name__}({os.getpid()})",
+                                             to_file=self.log_file, enabled=internal_log, level=internal_log_level)
 
         if isinstance(parent, QWidget) or isinstance(parent, QWindow):
             parent.destroyed.connect(lambda: self.safe_exit(reason="Parent destroyed."))