- migrate old API into typescript but not finished (only webLogin works now) - seperate the logger of backend due to the shitty behavior of Flask (change logging level)
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
import logging
|
|
import enum
|
|
|
|
|
|
def _build_logger() -> tuple[logging.Logger, logging.Handler]:
|
|
# Create a new logger which is independent with Flask
|
|
logger = logging.getLogger("my_console_logger")
|
|
# Avoid message was propagated to root logger or captured by Flask logger.
|
|
logger.propagate = False
|
|
# Set initial level.
|
|
logger.setLevel(logging.INFO)
|
|
|
|
# Create StreamHandler to output into stderr.
|
|
console_handler = logging.StreamHandler()
|
|
console_handler.setLevel(logging.DEBUG)
|
|
# Set format for it.
|
|
formatter = logging.Formatter("[%(levelname)s] %(message)s")
|
|
console_handler.setFormatter(formatter)
|
|
# Add handler
|
|
logger.addHandler(console_handler)
|
|
|
|
return (logger, console_handler)
|
|
|
|
|
|
(LOGGER, CONSOLE_HANDLER) = _build_logger()
|
|
|
|
|
|
class LoggerLevel(enum.IntEnum):
|
|
DEBUG = enum.auto()
|
|
INFO = enum.auto()
|
|
|
|
|
|
def set_level(level: LoggerLevel) -> None:
|
|
logging_level: int = logging.INFO
|
|
match level:
|
|
case LoggerLevel.DEBUG:
|
|
logging_level = logging.DEBUG
|
|
case LoggerLevel.INFO:
|
|
logging_level = logging.INFO
|
|
|
|
LOGGER.setLevel(logging_level)
|
|
CONSOLE_HANDLER.setLevel(logging_level)
|