61 lines
1.3 KiB
Python
61 lines
1.3 KiB
Python
import sys
|
|
from functools import wraps
|
|
from operator import attrgetter
|
|
from typing import Callable, Any
|
|
|
|
import loguru
|
|
from funcy import log_calls
|
|
|
|
dev_logger = loguru.logger
|
|
|
|
dev_logger.remove()
|
|
dev_logger.add(
|
|
sink=sys.stderr,
|
|
format="<green>{time:YYYY-MM-DD at HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>: <level>{message}</level>",
|
|
level="TRACE",
|
|
)
|
|
|
|
prod_logger = loguru.logger
|
|
|
|
prod_logger.add(
|
|
sink=sys.stderr,
|
|
format="<white>{time:YYYY-MM-DD at HH:mm:ss}</white> | <level>{level: <8}</level> | <cyan>{name}</cyan>: <level>{message}</level>",
|
|
level="INFO",
|
|
enqueue=True,
|
|
)
|
|
|
|
logger = loguru.logger
|
|
|
|
|
|
def __log(logger, level: str) -> Callable:
|
|
print_func = get_print_func(logger, level)
|
|
|
|
def inner(func: Callable) -> Callable:
|
|
@log_calls(print_func=print_func)
|
|
@wraps(func)
|
|
def inner(*args, **kwargs) -> Any:
|
|
return func(*args, **kwargs)
|
|
|
|
return inner
|
|
|
|
return inner
|
|
|
|
|
|
def get_print_func(logger, level: str):
|
|
return attrgetter(level.lower())(logger)
|
|
|
|
|
|
def dev_log(level: str = "TRACE") -> Callable:
|
|
return __log(dev_logger, level)
|
|
|
|
|
|
def prod_log(level: str = "TRACE") -> Callable:
|
|
return __log(prod_logger, level)
|
|
|
|
|
|
def delay(fn, *args, **kwargs):
|
|
def inner():
|
|
return fn(*args, **kwargs)
|
|
|
|
return inner
|