Logging (PzLog)
Puzzle2 uses a scoped logger that avoids process-wide logging side effects and supports custom levels.
Highlights
- Scoped logger per
name(propagate=False) - Custom levels: SUCCESS, RESULT, ALERT, FLAG, NOTICE
- Template fallback: YAML if available, otherwise JSON template
- Handler-level overrides via constructor kwargs (e.g.,
stream_level,file_level) DetailsAPI to accumulate structured results per step
Example
from puzzle2.PzLog import PzLog
log = PzLog("demo", new=True, logger_level="INFO")
log.success("All good")
log.result("Export done")
print(log.logger.handlers)
Details API
- set_name(name) -> index, scoped name
- set_header(return_code, text)
- add_detail(text)
- set_data_location(path), set_data_required(obj), set_execution_time(sec)
- get_return_codes() -> [0, ...]
- get_all() -> list of structured dicts