code: def get_sagemaker_config_logger():
      """Return a logger with the name 'sagemaker.config'
  
      If the logger to be returned has no level or handlers set, this will get level and handler
      attributes. (So if the SDK user has setup loggers in a certain way, that setup will not be
      changed by this function.) It is safe to make repeat calls to this function.
      """
      sagemaker_config_logger = logging.getLogger("sagemaker.config")
      sagemaker_logger = logging.getLogger("sagemaker")
  
      if sagemaker_config_logger.level == logging.NOTSET:
          sagemaker_config_logger.setLevel(logging.INFO)
  
      # check sagemaker_logger here as well, so that if handlers were set for the parent logger
      # already, we dont change behavior for the child logger
      if (
          len(sagemaker_config_logger.handlers) == 0
          and len(sagemaker_logger.handlers) == 0
      ):
          # use sys.stdout so logs dont show up with a red background in a notebook
          handler = logging.StreamHandler(sys.stdout)
  
          formatter = logging.Formatter(
              "%(name)s %(levelname)-4s - %(message)s"
          )
          handler.setFormatter(formatter)
          sagemaker_config_logger.addHandler(handler)
  
          # if a handler is being added, we dont want the root handler to also process the same events
          sagemaker_config_logger.propagate = False
  
      return sagemaker_config_logger
  
file_path: sagemaker-python-sdk/src/sagemaker/config/config_utils.py
imports: from __future__ import absolute_import
  from collections import deque
  import logging
  import sys
  from typing import Callable
label_desc: Use image node_id 1 for calling a global function with example usage: get_sagemaker_config_logger() and returns: sagemaker_config_logger