Source code for dataclass_wizard.log
from __future__ import annotations
from logging import getLogger, Logger, StreamHandler, DEBUG
from .constants import LOG_LEVEL, PACKAGE_NAME
LOG = getLogger(PACKAGE_NAME)
LOG.setLevel(LOG_LEVEL)
[docs]
def enable_library_debug_logging(
debug: bool | int,
logger: Logger = LOG,
) -> int:
"""
Enable debug logging for a library logger without touching global logging.
- Attaches a StreamHandler if none exists
- Sets logger + handler level
- Disables propagation to avoid duplicate logs
Returns the resolved logging level.
"""
lvl = DEBUG if isinstance(debug, bool) else debug
logger.setLevel(lvl)
if not any(isinstance(h, StreamHandler) for h in logger.handlers):
h = StreamHandler()
h.setLevel(lvl)
logger.addHandler(h)
else:
# ensure existing stream handlers honor the new level
for h in logger.handlers:
if isinstance(h, StreamHandler):
h.setLevel(lvl)
logger.propagate = False
return lvl