feat: Change logger to be flexible enough for the spiders classes

This commit is contained in:
Karim shoair
2026-01-11 03:22:20 +02:00
parent c5bc82deb8
commit aa4817f349
2 changed files with 22 additions and 1 deletions
+2
View File
@@ -1,5 +1,7 @@
from ._utils import (
log,
set_logger,
reset_logger,
__CONSECUTIVE_SPACES_REGEX__,
flatten,
_is_iterable,
+20 -1
View File
@@ -1,6 +1,7 @@
import logging
from itertools import chain
from re import compile as re_compile
from contextvars import ContextVar, Token
from lxml import html
@@ -36,7 +37,25 @@ def setup_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]: