Libreria Python per logging/stampa formattata con prefissi coerenti, filtro visibilità, log strutturati JSON opzionali e gestione session/remote id.
Project description
Printer Logging
Libreria Python per logging/stampa formattata con prefissi coerenti, filtro di visibilità, log strutturati JSON opzionali e gestione session/remote id.
Caratteristiche
- Prefissi coerenti: custom logs, session id, log_code
- Filtro di visibilità: controllo tramite
DebuggingMode(NORMAL, VERBOSE, DEBUG) - Output flessibile: stdout/stderr o
logging.Loggerintegrato - Log strutturati JSON: opzionali quando
use_structured_logging=True - Gestione log_code: risoluzione automatica con fallback e mapping configurabile
Installazione
pip install printer-logging
Quickstart
Uso diretto (classe Printer)
from printer import Printer, DebuggingMode, set_session_id
set_session_id("abc-123")
p = Printer(
debugging_mode=DebuggingMode.DEBUG,
name="MyApp",
use_structured_logging=False,
)
p.info("Hello") # default: print
p.warning("Bad request", log_code=400)
p.error("Boom", log_code=500)
Uso con API funzionale (singleton)
import printer
from printer import DebuggingMode
printer.configure_printer(
debugging_mode=DebuggingMode.DEBUG,
name="MyApp",
use_structured_logging=True,
default_output_type="log",
)
printer.info("Hello", log_code=200, category="REQUEST_RECEIVED")
printer.warning("Bad request", log_code=400)
printer.error("Error occurred", log_code=500)
DebuggingMode
Controlla la visibilità dei log:
NORMAL: mostra soloWARNING/ERROR/CRITICALVERBOSE: mostraINFO+(escludeDEBUG)PRODUCTION: equivalente aVERBOSEDEBUG: mostra tutto
Log strutturati JSON
Quando use_structured_logging=True e output_type="log", viene emesso anche un JSON per ogni evento con:
timestamp,level,logger,message,log_codecustom_logs_prefix,session_idcontext(state/phase/category) se presentiexceptionquando applicabile
Session ID
Gestito via contextvars, funziona anche in async:
from printer import set_session_id, get_session_id
set_session_id("abc-123")
assert get_session_id() == "abc-123"
API Reference
Metodi di Livello
Tutti i metodi di livello supportano i seguenti parametri comuni:
message(str): Messaggio da loggareoutput_type(str, opzionale):"print"o"log". SeNone, usadefault_output_typelog_code(int, opzionale): Codice numerico (100-999) per il logstate(str, opzionale): Stato corrente (influenza la risoluzione dellog_code)force(bool): SeTrue, bypassa il filtroDebuggingModeuse_emoji(bool): SeTrue, mostra emoji se configurata per il codice**properties: Metadati aggiuntivi (es.category,phase,user_id, ecc.)
debug(message, ...)
p.debug("Debug message", log_code=200, state="initializing")
printer.debug("Debug info", category="startup", phase="boot")
info(message, ...)
p.info("Application started", log_code=200)
printer.info("Request received", log_code=200, category="request", user_id=123)
warning(message, ...)
p.warning("Deprecated API used", log_code=400)
printer.warning("Rate limit approaching", log_code=429, remaining=5)
error(message, ...)
p.error("Failed to connect", log_code=500)
printer.error("Database error", log_code=503, db="primary", retry_count=3)
critical(message, ...)
p.critical("System failure", log_code=500)
printer.critical("Out of memory", log_code=500, memory_usage="99%")
success(message, ...)
p.success("Operation completed", log_code=200)
printer.success("User created", log_code=201, user_id=456)
Metodi Utility
header(message, char="=", length=80, force=False, **properties)
Stampa un'intestazione formattata:
p.header("Application Startup", char="=", length=50)
printer.header("Configuration", char="-", length=60)
section(title, content, force=False)
Stampa una sezione con titolo e contenuto:
p.section("Database", "Connected to PostgreSQL 14.2")
printer.section("Settings", "Debug mode: ON\nLog level: INFO")
custom(message, prefix="➡️", force=False)
Stampa un messaggio custom con prefisso:
p.custom("Custom log message", prefix="📝")
printer.custom("Processing started", prefix="⚙️")
plain(message, force=False)
Stampa un messaggio senza formattazione:
p.plain("Raw output without formatting")
printer.plain("Simple text message")
Metodi di Configurazione
set_logger_name(name)
Cambia il nome del logger:
p.set_logger_name("MyNewLogger")
printer.set_logger_name("AppLogger")
set_debugging_mode(mode)
Cambia la modalità di debugging:
from printer import DebuggingMode
p.set_debugging_mode(DebuggingMode.VERBOSE)
printer.set_debugging_mode(DebuggingMode.DEBUG)
API Funzionale (Singleton)
Quando usi import printer, puoi configurare un singleton condiviso:
configure_printer(...)
Configura il singleton con parametri:
import printer
from printer import DebuggingMode
printer.configure_printer(
debugging_mode=DebuggingMode.DEBUG,
custom_logs_prefix=True,
session_id_prefix=True,
name="MyApp",
use_structured_logging=True,
default_output_type="log",
log_codes_path="log_codes.json", # opzionale
stacktrace_mode="exception_only",
)
configure_printer_config(config)
Configura usando un oggetto PrinterConfig:
from printer import PrinterConfig, DebuggingMode
config = PrinterConfig(
debugging_mode=DebuggingMode.DEBUG,
name="MyApp",
use_structured_logging=True,
)
printer.configure_printer_config(config)
get_printer()
Ottiene l'istanza singleton configurata:
p = printer.get_printer()
p.info("Using singleton instance")
set_printer(printer)
Imposta manualmente il singleton:
from printer import Printer, DebuggingMode
my_printer = Printer(debugging_mode=DebuggingMode.DEBUG)
printer.set_printer(my_printer)
is_configured()
Verifica se il singleton è configurato:
if printer.is_configured():
printer.info("Ready to log")
else:
printer.configure_printer(...)
reset_printer()
Resetta il singleton (utile nei test):
printer.reset_printer()
Funzioni Utility
set_session_id(session_id)
Imposta il session ID nel contesto:
from printer import set_session_id
set_session_id("abc-123")
get_session_id()
Ottiene il session ID corrente:
from printer import get_session_id
session = get_session_id() # "abc-123" o None
Requisiti
- Python >= 3.9
Documentazione completa
Per dettagli completi, esempi avanzati e configurazione, consulta il README completo nel repository.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file printer_logging-1.0.4.tar.gz.
File metadata
- Download URL: printer_logging-1.0.4.tar.gz
- Upload date:
- Size: 34.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
edeb5c36d9eecd8ccf3e236561fdc4a454f7eafd8d39148e0f05b4d58137a961
|
|
| MD5 |
393897a47b1e3b2b637c7774237a777f
|
|
| BLAKE2b-256 |
0b065bb0a017b1578fc522484d9e46d169f6ff873cbb583a07706a851cd1c43d
|
File details
Details for the file printer_logging-1.0.4-py3-none-any.whl.
File metadata
- Download URL: printer_logging-1.0.4-py3-none-any.whl
- Upload date:
- Size: 31.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad6c7d3ea471d90afa03bb0e662f8c6e46ef9963fcbd11d9c7689d779d109816
|
|
| MD5 |
f147d5ae3aea49100adfd767476249f4
|
|
| BLAKE2b-256 |
e50c09135ff40f1e3b0008a11fbaf36150f0a60f81de3edae007b8263c501505
|