import logging
import uuid


class LoggingMixin:

    logging_group = None

    logging_name = None

    def renew_logging_group(self):
        self.logging_group = uuid.uuid4()

    def log(self, level, message, **kwargs):
        if self.logging_name:
            logger = logging.getLogger(self.logging_name)
        else:
            name = ".".join([self.__class__.__module__, self.__class__.__name__])
            logger = logging.getLogger(name)

        getattr(logger, level)(message, extra={"group": self.logging_group}, **kwargs)