feat: Change logger to be flexible enough for the spiders classes
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
from ._utils import (
|
from ._utils import (
|
||||||
log,
|
log,
|
||||||
|
set_logger,
|
||||||
|
reset_logger,
|
||||||
__CONSECUTIVE_SPACES_REGEX__,
|
__CONSECUTIVE_SPACES_REGEX__,
|
||||||
flatten,
|
flatten,
|
||||||
_is_iterable,
|
_is_iterable,
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
from re import compile as re_compile
|
from re import compile as re_compile
|
||||||
|
from contextvars import ContextVar, Token
|
||||||
|
|
||||||
from lxml import html
|
from lxml import html
|
||||||
|
|
||||||
@@ -36,7 +37,25 @@ def setup_logger():
|
|||||||
return logger
|
return logger
|
||||||
|
|
||||||
|
|
||||||
log = setup_logger()
|
_current_logger: ContextVar[logging.Logger] = ContextVar("scrapling_logger", default=setup_logger())
|
||||||
|
|
||||||
|
|
||||||
|
class LoggerProxy:
|
||||||
|
def __getattr__(self, name: str):
|
||||||
|
return getattr(_current_logger.get(), name)
|
||||||
|
|
||||||
|
|
||||||
|
log = LoggerProxy()
|
||||||
|
|
||||||
|
|
||||||
|
def set_logger(logger: logging.Logger) -> Token:
|
||||||
|
"""Set the current context logger. Returns token for reset."""
|
||||||
|
return _current_logger.set(logger)
|
||||||
|
|
||||||
|
|
||||||
|
def reset_logger(token: Token) -> None:
|
||||||
|
"""Reset logger to previous state using token."""
|
||||||
|
_current_logger.reset(token)
|
||||||
|
|
||||||
|
|
||||||
def flatten(lst: Iterable[Any]) -> List[Any]:
|
def flatten(lst: Iterable[Any]) -> List[Any]:
|
||||||
|
|||||||
Reference in New Issue
Block a user