class_docstr: Configure logging using a dictionary-like object to describe the
  configuration.
class_docstr_tok: ["Configure","logging","using","a","dictionary-like","object","to","describe","the","configuration","."]
docstr: Perform configuration which is common to root and non-root loggers.
docstr_tok: ["Perform","configuration","which","is","common","to","root","and","non-root","loggers","."]
code: def common_logger_config(self, logger, config, incremental=False):
      """
      Perform configuration which is common to root and non-root loggers.
      """
      level = config.get("level", None)
      if level is not None:
          logger.setLevel(logging._checkLevel(level))
      if not incremental:
          # Remove any existing handlers
          for h in logger.handlers[:]:
              logger.removeHandler(h)
          handlers = config.get("handlers", None)
          if handlers:
              self.add_handlers(logger, handlers)
          filters = config.get("filters", None)
          if filters:
              self.add_filters(logger, filters)
  
imports: import errno
  import functools
  import io
  import logging
  import logging.handlers
  import os
  import queue
  import re
  import struct
  import threading
  import traceback
  from socketserver import ThreadingTCPServer, StreamRequestHandler
label_desc: Use image node_id 8 for calling the DictConfigurator obj's underlying member method code with example usage: obj.common_logger_config(logger, config, incremental) without return types