class_docstr: Mixin class that adds logging functionality to another class.
  
  You can define a new class that subclasses from ``LogMixin`` as well as
  other base classes through multiple inheritance.
  All instances of that class will have a ``log`` property that returns
  a ``logging.Logger`` named after their respective ``<module>.<class>``.
  
  For example:
  
  >>> class BaseClass(object):
  ...     pass
  >>> class MyClass(LogMixin, BaseClass):
  ...     pass
  >>> a = MyClass()
  >>> isinstance(a.log, logging.Logger)
  True
  >>> print(a.log.name)
  fontTools.misc.loggingTools.MyClass
  >>> class AnotherClass(MyClass):
  ...     pass
  >>> b = AnotherClass()
  >>> isinstance(b.log, logging.Logger)
  True
  >>> print(b.log.name)
  fontTools.misc.loggingTools.AnotherClass
code: def log(self):
      if not hasattr(self, "_log"):
          name = ".".join(
              (self.__class__.__module__, self.__class__.__name__)
          )
          self._log = logging.getLogger(name)
      return self._log
  
imports: import sys
  import logging
  import timeit
  from functools import wraps
  from collections.abc import Mapping, Callable
  import warnings
  from logging import PercentStyle
label_desc: Use image node_id 1 for calling the LogMixin obj's underlying member method code with example usage: obj.log() and returns: self