plinder.core.utils.log#

plinder.core.utils.log.setup_logger(logger_name: str | None = None, log_level: int = 0, log_file: str | None = None, propagate: bool = False) → Logger[source]#

Setup logger for the module name as the logger name by default for easy tracing of what’s happening in the code

Parameters:
logger_namestr | None

Name of the logger; if None, derived from the calling module’s filename.

log_levelint

Log level

log_file: str | None

optional log file to write to

propagatebool

propagate log events to parent loggers, default = False

Returns:
logging.Logger:

logger object

Notes

When propagate=False (the default), pytest’s caplog fixture cannot observe records from this logger because caplog hooks the root logger. Tests asserting on warnings/errors should either pass propagate=True here or capture via monkeypatch.setattr(LOG, "warning", ...).

Examples

>>> logger = setup_logger("some_logger_name")
>>> logger.name
'some_logger_name'
>>> logger.level
20
>>> logger = setup_logger(log_level=logging.DEBUG)
>>> logger.name
'log.py'
>>> logger.level
10