Skip to content

Logging config

LoggingConfig

Bases: object

Config class of logging utils.

Source code in agentuniverse/base/util/logging/logging_config.py
Python
class LoggingConfig(object):
    """Config class of logging utils."""
    log_format: str = ("<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> "
                       "| <level>{level: <8}</level> "
                       "| {extra[context_prefix]} "
                       "| <cyan>{name}</cyan>"
                       ":<cyan>{function}</cyan>"
                       ":<cyan>{line}</cyan> "
                       "| <level>{message}</level>")
    log_level: str = "INFO"
    log_extend_module_list: List[str] = ["sls_log"]
    log_extend_module_switch: Dict[str, bool] = {}
    log_path: Optional[str] = None
    log_rotation: str = "10 MB"
    log_retention: str = "3 days"

    # Aliyun sls configs.
    sls_endpoint: str = ""
    sls_project: str = ""
    sls_log_store: str = ""
    access_key_id: str = ""
    access_key_secret: str = ""
    sls_log_queue_max_size: int = 1000
    sls_log_send_interval: float = 3.0

    def __init__(self, config_path: Optional[str] = None):
        """Initialize the log config using config file if specified, otherwise
        use default value.

        Args:
            config_path(str):
                the path of the toml file
        """
        self.__config = None
        try:
            self.__config = _load_toml_file(config_path)["LOG_CONFIG"]
        except (FileNotFoundError, TypeError):
            print("can't find log config file, use default config")
            for log_module in LoggingConfig.log_extend_module_list:
                LoggingConfig.log_extend_module_switch[log_module] = False
            return
        except (tomli.TOMLDecodeError, KeyError):
            print("log config file isn't a valid toml, use default config.")
            for log_module in LoggingConfig.log_extend_module_list:
                LoggingConfig.log_extend_module_switch[log_module] = False
            return

        for log_module in LoggingConfig.log_extend_module_list:
            switch = self._get_config_or_default("EXTEND_MODULE",
                                                 log_module)
            if switch and switch.lower() == 'true':
                LoggingConfig.log_extend_module_switch[log_module] = True
            else:
                LoggingConfig.log_extend_module_switch[log_module] = False

        log_level = self._get_config_or_default("BASIC_CONFIG",
                                                "log_level")
        if log_level:
            LoggingConfig.log_level = log_level.upper()

        log_path = self._get_config_or_default("BASIC_CONFIG",
                                               "log_path")
        if log_path:
            LoggingConfig.log_path = log_path

        log_rotation = self._get_config_or_default("BASIC_CONFIG",
                                                   "log_rotation")
        if log_rotation:
            LoggingConfig.log_rotation = log_rotation

        log_retention = self._get_config_or_default("BASIC_CONFIG",
                                                    "log_retention")
        if log_retention:
            LoggingConfig.log_retention = log_retention

        # Read sls config when sls extend module come into effect.
        if LoggingConfig.log_extend_module_switch["sls_log"]:
            LoggingConfig.sls_endpoint = self._get_config_or_default(
                "ALIYUN_SLS_CONFIG", "sls_endpoint")
            LoggingConfig.sls_project = self._get_config_or_default(
                "ALIYUN_SLS_CONFIG", "sls_project")
            LoggingConfig.sls_log_store = self._get_config_or_default(
                "ALIYUN_SLS_CONFIG", "sls_log_store")
            LoggingConfig.access_key_id = self._get_config_or_default(
                "ALIYUN_SLS_CONFIG", "access_key_id")
            LoggingConfig.access_key_secret = self._get_config_or_default(
                "ALIYUN_SLS_CONFIG", "access_key_secret")
            LoggingConfig.sls_log_queue_max_size = int(
                self._get_config_or_default("ALIYUN_SLS_CONFIG",
                                            "sls_log_queue_max_size"))
            LoggingConfig.sls_log_send_interval = float(
                self._get_config_or_default("ALIYUN_SLS_CONFIG",
                                            "sls_log_send_interval"))

    def _get_config_or_default(self, section, key, default_value=None):
        """Get config attribute from toml data, return default_value if no such
        attribute."""
        try:
            return self.__config[section][key]
        except KeyError:
            return default_value

__init__(config_path=None)

Initialize the log config using config file if specified, otherwise use default value.

Parameters:

Name Type Description Default
config_path(str)

the path of the toml file

required
Source code in agentuniverse/base/util/logging/logging_config.py
Python
def __init__(self, config_path: Optional[str] = None):
    """Initialize the log config using config file if specified, otherwise
    use default value.

    Args:
        config_path(str):
            the path of the toml file
    """
    self.__config = None
    try:
        self.__config = _load_toml_file(config_path)["LOG_CONFIG"]
    except (FileNotFoundError, TypeError):
        print("can't find log config file, use default config")
        for log_module in LoggingConfig.log_extend_module_list:
            LoggingConfig.log_extend_module_switch[log_module] = False
        return
    except (tomli.TOMLDecodeError, KeyError):
        print("log config file isn't a valid toml, use default config.")
        for log_module in LoggingConfig.log_extend_module_list:
            LoggingConfig.log_extend_module_switch[log_module] = False
        return

    for log_module in LoggingConfig.log_extend_module_list:
        switch = self._get_config_or_default("EXTEND_MODULE",
                                             log_module)
        if switch and switch.lower() == 'true':
            LoggingConfig.log_extend_module_switch[log_module] = True
        else:
            LoggingConfig.log_extend_module_switch[log_module] = False

    log_level = self._get_config_or_default("BASIC_CONFIG",
                                            "log_level")
    if log_level:
        LoggingConfig.log_level = log_level.upper()

    log_path = self._get_config_or_default("BASIC_CONFIG",
                                           "log_path")
    if log_path:
        LoggingConfig.log_path = log_path

    log_rotation = self._get_config_or_default("BASIC_CONFIG",
                                               "log_rotation")
    if log_rotation:
        LoggingConfig.log_rotation = log_rotation

    log_retention = self._get_config_or_default("BASIC_CONFIG",
                                                "log_retention")
    if log_retention:
        LoggingConfig.log_retention = log_retention

    # Read sls config when sls extend module come into effect.
    if LoggingConfig.log_extend_module_switch["sls_log"]:
        LoggingConfig.sls_endpoint = self._get_config_or_default(
            "ALIYUN_SLS_CONFIG", "sls_endpoint")
        LoggingConfig.sls_project = self._get_config_or_default(
            "ALIYUN_SLS_CONFIG", "sls_project")
        LoggingConfig.sls_log_store = self._get_config_or_default(
            "ALIYUN_SLS_CONFIG", "sls_log_store")
        LoggingConfig.access_key_id = self._get_config_or_default(
            "ALIYUN_SLS_CONFIG", "access_key_id")
        LoggingConfig.access_key_secret = self._get_config_or_default(
            "ALIYUN_SLS_CONFIG", "access_key_secret")
        LoggingConfig.sls_log_queue_max_size = int(
            self._get_config_or_default("ALIYUN_SLS_CONFIG",
                                        "sls_log_queue_max_size"))
        LoggingConfig.sls_log_send_interval = float(
            self._get_config_or_default("ALIYUN_SLS_CONFIG",
                                        "sls_log_send_interval"))