class_docstr: This class is used to receive logging messages sent from worker processes that
  are running in different PROCESSES (not threads).
  
  The logging will work when using threads. However, when using processes (multiprocessing.Process) :class:`multiprocessing.Process`
  , the present class
  is needed in the main process to receive the logging messages from the worker processes properly in the main console output.
class_docstr_tok: ["This","class","is","used","to","receive","logging","messages","sent","from","worker","processes","that","are","running","in","different","PROCESSES","(","not","threads",")",".","The","logging","will","work","when","using","threads",".","However",",","when","using","processes","(","multiprocessing.Process",")",":","class",":","`","multiprocessing.Process","`",",","the","present","class","is","needed","in","the","main","process","to","receive","the","logging","messages","from","the","worker","processes","properly","in","the","main","console","output","."]
docstr: This function is destined to be run in a separate thread.
  Receiving a None signal in the queue means it's time to finish and to break the
  while True. This None signal is as sent from within the self. :func:`join` () method.
  The Queue normally consumes logging.LogRecord items.
docstr_tok: ["This","function","is","destined","to","be","run","in","a","separate","thread",".","Receiving","a","None","signal","in","the","queue","means","it","'s","time","to","finish","and","to","break","the","while","True",".","This","None","signal","is","as","sent","from","within","the","self",".",":","func",":","`","join","`","(",")","method",".","The","Queue","normally","consumes","logging.LogRecord","items","."]
code: def logger_consumer_thread_func(queue: Queue):
      """
      This function is destined to be run in a separate thread.
      Receiving a None signal in the queue means it's time to finish and to break the
      while True. This None signal is as sent from within the self. :func:`join` () method.
      The Queue normally consumes logging.LogRecord items.
      """
      while True:
          rec: logging.LogRecord = queue.get()
  
          if rec is None:
              break
  
          logger = logging.getLogger(rec.name)
          logger.handle(rec)
  
imports: import logging
  import re
  import sys
  from threading import Thread
  from io import StringIO
  from multiprocessing import Queue
  from typing import IO, Dict, List, Optional
label_desc: Use image node_id 3 for calling the ParallelLoggingConsumerThread obj's underlying member method code with example usage: obj.logger_consumer_thread_func(queue) without return types