code: def run(self):
          
          # Initialize the file logger
          self.log = getLogger()
  
          # Deserialize configuration
          self.set_config_command = dill.loads(self.set_config_command)
          self.set_configuration(self.set_config_command)
  
          for handler in self.file_handlers:
              if isinstance(handler, StreamHandler)\
                      and (handler.stream == sys.stdout or handler.stream == sys.stderr):
                  self.critical(LogMessageCommand(text='Cannot use logging.StreamHandler with \'sys.stdout\' nor '
                                                       '\'sys.stderr\' because those are reserved by the logger process',
                                                  level=logging.CRITICAL))
                  continue
  
              self.log.addHandler(hdlr=handler)
  
          self.log.setLevel(self.console_level)
  
          while True:
              o = dill.loads(self.queue.get())
  
              if isinstance(o, LogMessageCommand):
                  if o.level == logging.DEBUG:
                      self.debug(command=o)
                  elif o.level == logging.INFO:
                      self.info(command=o)
                  elif o.level == logging.WARNING:
                      self.warning(command=o)
                  elif o.level == logging.ERROR:
                      self.error(command=o)
                  elif o.level == logging.CRITICAL:
                      self.critical(command=o)
  
              elif isinstance(o, UpdateProgressCommand):
                  self.update(command=o)
  
              elif isinstance(o, NewTaskCommand):
                  self.set_task(command=o)
  
              elif isinstance(o, FlushCommand):
                  self.flush()
  
              elif isinstance(o, StacktraceCommand):
                  self.throw(command=o)
  
              elif isinstance(o, SetConfigurationCommand):
                  self.set_configuration(command=o)
  
              elif isinstance(o, ExitCommand):
                  return
  
              elif isinstance(o, SetLevelCommand):
                  self.set_level(command=o)
docs: The main loop for the logger process. Will receive remote processes orders one by one and wait for the next one.
          Then return from this method when the main application calls for exit, which is a regular command.