aboutsummaryrefslogtreecommitdiffstats
path: root/gdpr_obfuscator/logger.py
blob: fe97210d57a870192fe0fcbdb2c7a069aaa57166 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import logging
from enum import Enum


class LogLevel(Enum):
    DEBUG = logging.DEBUG
    INFO = logging.INFO
    WARNING = logging.WARNING
    ERROR = logging.ERROR
    CRITICAL = logging.CRITICAL


def get_logger(name: str, level: LogLevel = LogLevel.INFO) -> logging.Logger:
    if isinstance(level, str):
        try:
            level = LogLevel[level.upper()]
        except KeyError:
            raise ValueError(
                f"Invalid log level '{level}'. Choose from: {', '.join(l.name for l in LogLevel)}"
            )

    logger = logging.getLogger(name)

    if logger.hasHandlers():
        logger.handlers.clear()

    handler = logging.StreamHandler()
    logger.setLevel(level.value)
    formatting = logging.Formatter(
        "[%(asctime)s] - %(levelname)s::%(name)s - %(message)s"
    )
    handler.setFormatter(formatting)
    logger.addHandler(handler)

    return logger
git.ajschof.me — hosted by ajschofield — powered by cgit