class_docstr: A parent class for Configurables that log.
  
  Subclasses have a log trait, and the default behavior
  is to get the logger from the currently running Application.
code: def _validate_log(self, proposal: Bunch) -> LoggerType:
      if not isinstance(
          proposal.value, (logging.Logger, logging.LoggerAdapter)
      ):
          # warn about unsupported type, but be lenient to allow for duck typing
          warnings.warn(
              f"{self.__class__.__name__}.log should be a Logger or LoggerAdapter,"
              f" got {proposal.value}.",
              UserWarning,
              stacklevel=2,
          )
      return t.cast(LoggerType, proposal.value)
  
imports: from __future__ import annotations
  import logging
  import typing
  from copy import deepcopy
  from textwrap import dedent
  from traitlets.traitlets import Any, Container, Dict, HasTraits, Instance, TraitType, default, observe, observe_compat, validate
  from traitlets.utils import warnings
  from traitlets.utils.bunch import Bunch
  from traitlets.utils.text import indent, wrap_paragraphs
  from .loader import Config, DeferredConfig, LazyConfigValue, _is_section_key
label_desc: Use image node_id 1 for calling the LoggingConfigurable obj's underlying member method code with example usage: obj._validate_log(proposal) and returns: t