Skip to content

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)
  • Details API 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