Source code for jsktoolbox.logstool.keys

# -*- coding: UTF-8 -*-
"""
Author:  Jacek 'Szumak' Kotlarski --<szumak@virthost.pl>
Created: 2024-09-06

Purpose: Define read-only key containers for the logging subsystem.

The module centralises symbolic names for log levels, facilities, and queue
attributes to keep engines, formatters, and clients aligned.
"""

import syslog

from types import MappingProxyType
from typing import Mapping
from ..attribtool import ReadOnlyClass


[docs] class LogKeys(object, metaclass=ReadOnlyClass): """Expose symbolic names shared across log engines, queues, and clients.""" BUFFERED: str = "__buffered__" CONF: str = "__conf__" DIR: str = "__dir__" FACILITY: str = "__facility__" FILE: str = "__file__" FORMATTER: str = "__formatter__" LEVEL: str = "__level__" NAME: str = "__name__" NO_CONF: str = "__no_conf__" QUEUE: str = "__queue__" SYSLOG: str = "__syslog__" ROTATE_SIZE: str = "__rotate_size__" ROTATE_COUNT: str = "__rotate_count__"
[docs] class SysLogKeys(object, metaclass=ReadOnlyClass): """Provide syslog level and facility constants as read-only namespaces.""" class __Levels(object, metaclass=ReadOnlyClass): ALERT = syslog.LOG_ALERT CRITICAL = syslog.LOG_CRIT DEBUG = syslog.LOG_DEBUG EMERGENCY = syslog.LOG_EMERG ERROR = syslog.LOG_ERR INFO = syslog.LOG_INFO NOTICE = syslog.LOG_NOTICE WARNING = syslog.LOG_WARNING class __Facilities(object, metaclass=ReadOnlyClass): DAEMON = syslog.LOG_DAEMON LOCAL0 = syslog.LOG_LOCAL0 LOCAL1 = syslog.LOG_LOCAL1 LOCAL2 = syslog.LOG_LOCAL2 LOCAL3 = syslog.LOG_LOCAL3 LOCAL4 = syslog.LOG_LOCAL4 LOCAL5 = syslog.LOG_LOCAL5 LOCAL6 = syslog.LOG_LOCAL6 LOCAL7 = syslog.LOG_LOCAL7 MAIL = syslog.LOG_MAIL SYSLOG = syslog.LOG_SYSLOG USER = syslog.LOG_USER #: Exposes syslog level constants as read-only namespace. level: type[__Levels] = __Levels #: Exposes syslog facility constants as read-only namespace. facility: type[__Facilities] = __Facilities #: Maps human-readable level names to syslog values. level_keys: Mapping[str, int] = MappingProxyType( { "ALERT": __Levels.ALERT, "CRITICAL": __Levels.CRITICAL, "DEBUG": __Levels.DEBUG, "EMERGENCY": __Levels.EMERGENCY, "ERROR": __Levels.ERROR, "INFO": __Levels.INFO, "NOTICE": __Levels.NOTICE, "WARNING": __Levels.WARNING, } ) #: Maps human-readable facility names to syslog values. facility_keys: Mapping[str, int] = MappingProxyType( { "DAEMON": __Facilities.DAEMON, "LOCAL0": __Facilities.LOCAL0, "LOCAL1": __Facilities.LOCAL1, "LOCAL2": __Facilities.LOCAL2, "LOCAL3": __Facilities.LOCAL3, "LOCAL4": __Facilities.LOCAL4, "LOCAL5": __Facilities.LOCAL5, "LOCAL6": __Facilities.LOCAL6, "LOCAL7": __Facilities.LOCAL7, "MAIL": __Facilities.MAIL, "SYSLOG": __Facilities.SYSLOG, "USER": __Facilities.USER, } )
[docs] class LogsLevelKeys(object, metaclass=ReadOnlyClass): """Provide symbolic identifiers for supported log severities.""" ALERT: str = "ALERT" CRITICAL: str = "CRITICAL" DEBUG: str = "DEBUG" EMERGENCY: str = "EMERGENCY" ERROR: str = "ERROR" INFO: str = "INFO" NOTICE: str = "NOTICE" WARNING: str = "WARNING" #: Contains all supported log level identifiers. keys: tuple[str, ...] = ( ALERT, CRITICAL, DEBUG, EMERGENCY, ERROR, INFO, NOTICE, WARNING, )
# #[EOF]#######################################################################