class_docstr: Convenience super-class to have a logger configured with the class name.
class_docstr_tok: ["Convenience","super-class","to","have","a","logger","configured","with","the","class","name","."]
code: def _get_log(cls, obj: Any, clazz: type[_T]) -> Logger:
      if obj._log is None:
          logger_name: str = cls._create_logger_name(
              logged_class=clazz,
              log_config_logger_name=obj._log_config_logger_name,
              class_logger_name=obj._logger_name,
          )
          obj._log = logging.getLogger(logger_name)
      return obj._log
  
imports: from __future__ import annotations
  import abc
  import enum
  import logging
  import sys
  from io import IOBase
  from logging import Handler, StreamHandler
  from typing import IO, TYPE_CHECKING, Any, Optional, TypeVar, cast
  import re2
label_desc: Use image node_id 3 for calling the LoggingMixin obj's underlying member method code with example usage: obj._get_log(cls, obj, clazz) and returns: obj