Skip to content

log

Somesy log configuration.

VERBOSE module-attribute

VERBOSE: int = 15

Custom logging level between INFO and DEBUG.

SomesyLogLevel

Bases: Enum

Somesy-specific log levels.

Source code in src/somesy/core/log.py
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class SomesyLogLevel(Enum):
    """Somesy-specific log levels."""

    SILENT = auto()
    INFO = auto()
    VERBOSE = auto()
    DEBUG = auto()

    @staticmethod
    def from_flags(
        *,
        info: Optional[bool] = None,
        verbose: Optional[bool] = None,
        debug: Optional[bool] = None,
    ):
        """Convert CLI/config flags into a log level."""
        if debug:
            return SomesyLogLevel.DEBUG
        elif verbose:
            return SomesyLogLevel.VERBOSE
        elif info:
            return SomesyLogLevel.INFO
        return SomesyLogLevel.SILENT

    @staticmethod
    def to_logging(lv):
        """Convert a somesy log level into a logging log level."""
        if lv == SomesyLogLevel.SILENT:
            return logging.WARNING
        if lv == SomesyLogLevel.INFO:
            return logging.INFO
        if lv == SomesyLogLevel.VERBOSE:
            return VERBOSE
        if lv == SomesyLogLevel.DEBUG:
            return logging.DEBUG

from_flags staticmethod

from_flags(
    *,
    info: Optional[bool] = None,
    verbose: Optional[bool] = None,
    debug: Optional[bool] = None
)

Convert CLI/config flags into a log level.

Source code in src/somesy/core/log.py
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@staticmethod
def from_flags(
    *,
    info: Optional[bool] = None,
    verbose: Optional[bool] = None,
    debug: Optional[bool] = None,
):
    """Convert CLI/config flags into a log level."""
    if debug:
        return SomesyLogLevel.DEBUG
    elif verbose:
        return SomesyLogLevel.VERBOSE
    elif info:
        return SomesyLogLevel.INFO
    return SomesyLogLevel.SILENT

to_logging staticmethod

to_logging(lv)

Convert a somesy log level into a logging log level.

Source code in src/somesy/core/log.py
38
39
40
41
42
43
44
45
46
47
48
@staticmethod
def to_logging(lv):
    """Convert a somesy log level into a logging log level."""
    if lv == SomesyLogLevel.SILENT:
        return logging.WARNING
    if lv == SomesyLogLevel.INFO:
        return logging.INFO
    if lv == SomesyLogLevel.VERBOSE:
        return VERBOSE
    if lv == SomesyLogLevel.DEBUG:
        return logging.DEBUG

get_log_level

get_log_level() -> Optional[SomesyLogLevel]

Return current user-defined log level.

Source code in src/somesy/core/log.py
54
55
56
def get_log_level() -> Optional[SomesyLogLevel]:
    """Return current user-defined log level."""
    return _log_level

set_log_level

set_log_level(log_level: SomesyLogLevel) -> None

Set the current log level.

Source code in src/somesy/core/log.py
59
60
61
62
63
64
65
66
67
def set_log_level(log_level: SomesyLogLevel) -> None:
    """Set the current log level."""
    global _log_level
    # update current somesy log level
    _log_level = log_level
    # (re-)init logging (rich formatter config depends on passed log level)
    init_log()
    # set the current logging log level
    logger.setLevel(SomesyLogLevel.to_logging(log_level))

init_log

init_log()

Initialize logging (add VERBOSE log level and Rich formatter).

Source code in src/somesy/core/log.py
70
71
72
73
def init_log():
    """Initialize logging (add VERBOSE log level and Rich formatter)."""
    _add_verbose_level()
    _init_rich_handler(get_log_level())