feat(shared): let user provide the log level (#1493)
* feat(shared): let user provide the log level Simplify the logger setup, as choice should be left to the user to import or guess the log level from verbosity. * fix: linting
This commit is contained in:
parent
9bad45acb3
commit
501e7844e3
|
@ -5,7 +5,7 @@ from typing import Optional
|
||||||
|
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from .logging import LogLevel, setup_logger
|
from .logging import LogLevel, level_from_verbosity, setup_logger
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=too-few-public-methods
|
# pylint: disable=too-few-public-methods
|
||||||
|
@ -16,6 +16,7 @@ class AbstractApp(ABC):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
log_level: LogLevel
|
log_level: LogLevel
|
||||||
|
log_filepath: Optional[Path] = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
|
@ -29,8 +30,9 @@ class AbstractApp(ABC):
|
||||||
log_filepath: Optional[PathLike] = None,
|
log_filepath: Optional[PathLike] = None,
|
||||||
):
|
):
|
||||||
if log_filepath is not None:
|
if log_filepath is not None:
|
||||||
log_filepath = Path(log_filepath)
|
self.log_filepath = Path(log_filepath)
|
||||||
|
|
||||||
self.log_level = setup_logger(verbosity=verbosity, filepath=log_filepath)
|
self.log_level = level_from_verbosity(verbosity)
|
||||||
|
setup_logger(level=self.log_level, filepath=self.log_filepath)
|
||||||
|
|
||||||
logger.info(f"Starting {self.name}...")
|
logger.info(f"Starting {self.name}...")
|
||||||
|
|
|
@ -46,10 +46,10 @@ def level_from_verbosity(verbosity: int) -> LogLevel:
|
||||||
|
|
||||||
|
|
||||||
def setup_logger(
|
def setup_logger(
|
||||||
verbosity: int,
|
level: LogLevel,
|
||||||
filepath: Optional[Path] = None,
|
filepath: Optional[Path] = None,
|
||||||
serialize: bool = False,
|
serialize: bool = False,
|
||||||
) -> LogLevel:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Configure the logger and return the computed log level.
|
Configure the logger and return the computed log level.
|
||||||
|
|
||||||
|
@ -60,8 +60,6 @@ def setup_logger(
|
||||||
:param serialize: generate JSON formatted log records
|
:param serialize: generate JSON formatted log records
|
||||||
:returns: log level guessed from the verbosity
|
:returns: log level guessed from the verbosity
|
||||||
"""
|
"""
|
||||||
level = level_from_verbosity(verbosity)
|
|
||||||
|
|
||||||
handlers = [dict(sink=sys.stderr, level=level.no, serialize=serialize)]
|
handlers = [dict(sink=sys.stderr, level=level.no, serialize=serialize)]
|
||||||
|
|
||||||
if filepath is not None:
|
if filepath is not None:
|
||||||
|
@ -78,14 +76,12 @@ def setup_logger(
|
||||||
|
|
||||||
logger.configure(handlers=handlers)
|
logger.configure(handlers=handlers)
|
||||||
|
|
||||||
return level
|
|
||||||
|
|
||||||
|
|
||||||
_empty_logger = deepcopy(logger)
|
_empty_logger = deepcopy(logger)
|
||||||
|
|
||||||
|
|
||||||
def create_task_logger(
|
def create_task_logger(
|
||||||
verbosity: int,
|
level: LogLevel,
|
||||||
filepath: Path,
|
filepath: Path,
|
||||||
serialize: bool = False,
|
serialize: bool = False,
|
||||||
) -> "Logger":
|
) -> "Logger":
|
||||||
|
@ -99,8 +95,6 @@ def create_task_logger(
|
||||||
"""
|
"""
|
||||||
task_logger = deepcopy(_empty_logger)
|
task_logger = deepcopy(_empty_logger)
|
||||||
|
|
||||||
level = level_from_verbosity(verbosity)
|
|
||||||
|
|
||||||
task_logger.configure(
|
task_logger.configure(
|
||||||
handlers=[
|
handlers=[
|
||||||
dict(
|
dict(
|
||||||
|
|
Loading…
Reference in New Issue