https://github.com/apache/airflow/blob/main/airflow/cli/commands/task_command.py#L145
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
    @classmethod
    def logger(cls) -> Logger:
        """Return a logger."""
        return LoggingMixin._get_log(cls, cls)
    @property
    def log(self) -> Logger:
        """Return a logger."""
        return LoggingMixin._get_log(self, self.__class__)
    def _set_context(self, context):
        if context is not None:
            set_context(self.log, context)
class ExternalLoggingMixin:
    """Define a log handler based on an external service (e.g. ELK, StackDriver)."""
    @property
    @abc.abstractmethod
    def log_name(self) -> str:
        """Return log name."""
    @abc.abstractmethod
    def get_external_log_url(self, task_instance, try_number) -> str: