AnonSec Shell
Server IP : 92.204.138.22  /  Your IP : 18.224.55.82
Web Server : Apache
System : Linux ns1009439.ip-92-204-138.us 4.18.0-553.8.1.el8_10.x86_64 #1 SMP Tue Jul 2 07:26:33 EDT 2024 x86_64
User : internationaljou ( 1019)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/opt/nydus/ops/primordial/log/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /var/opt/nydus/ops/primordial/log/extra.py
# -*- coding: utf-8 -*-
import abc
import logging.config
from typing import Any, Dict, Optional  # pylint: disable=W0611

from primordial.log.envelopedata import EnvelopeRole

LOG = logging.getLogger(__name__)


# Abstract Factory class
class LogExtra(metaclass=abc.ABCMeta):
    """Abstract Base Class that provides a set of methods for extraction, setting and retrieval of 'extra' log data."""
    EXTRA_FIELD = 'extra'

    def __init__(self, **kwargs: str) -> None:
        self.extra = {}  # type: Dict[str, Any]
        self.set(**kwargs)

    @staticmethod
    def getLogExtra(**kwargs: str) -> 'LogExtra':
        """Factory method to create a new LogExtra instance."""
        # Default role to 'DEVELOPMENT'
        role = EnvelopeRole.DEFAULT_ROLE

        if EnvelopeRole.ROLE_FIELD in kwargs:
            role = kwargs[EnvelopeRole.ROLE_FIELD]

        if role == EnvelopeRole.ROLE_DEVELOPMENT:
            return DevLogExtra(**kwargs)
        if role == EnvelopeRole.ROLE_BUSINESS_ANALYTICS:
            return BALogExtra(**kwargs)
        if role == EnvelopeRole.ROLE_PERFORMANCE:
            return PerfLogExtra(**kwargs)
        raise ValueError("Invalid role " + role)

    def set(self, **kwargs: str) -> None:
        """Set fields on a LogExtra instance."""
        for k, v in kwargs.items():
            if k is not EnvelopeRole.ROLE_FIELD:
                self.setField(k, v)

    def setField(self, field: str, value: Any) -> None:
        """Set an individual field's value.

        :param field: The field to be set
        :param value: The value of the field
        """
        self.extra[field] = value

    def get(self, field: Optional[str] = None) -> Any:
        if field is None:
            # Return 'extra' dict in format required for logger
            return {'extra': self.extra}
        if field in self.extra:
            # Return particular field from 'extra' dict
            return self.extra[field]
        return None


class DevLogExtra(LogExtra):
    """Log extra data for development."""
    def __init__(self, **kwargs: str) -> None:
        super().__init__(**kwargs)
        self.extra[EnvelopeRole.ROLE_FIELD] = EnvelopeRole.ROLE_DEVELOPMENT


class BALogExtra(LogExtra):
    """Log extra data for business analytics."""
    def __init__(self, **kwargs: str) -> None:
        super().__init__(**kwargs)
        self.extra[EnvelopeRole.ROLE_FIELD] = EnvelopeRole.ROLE_BUSINESS_ANALYTICS


class PerfLogExtra(LogExtra):
    """Log extra data for performance data."""
    def __init__(self, **kwargs: str) -> None:
        super().__init__(**kwargs)
        self.extra[EnvelopeRole.ROLE_FIELD] = EnvelopeRole.ROLE_PERFORMANCE

Anon7 - 2022
AnonSec Team