Metadata-Version: 2.4
Name: printer-logging
Version: 1.0.3
Summary: Libreria Python per logging/stampa formattata con prefissi coerenti, filtro visibilità, log strutturati JSON opzionali e gestione session/remote id.
Author: Marco
License: Copyright (c) 2025 Marco
        Tutti i diritti riservati.
        
        LICENZA PROPRIETARIA (USO INTERNO)
        
        Questo software e la relativa documentazione (il "Software") sono di proprietà
        esclusiva del titolare del copyright indicato sopra.
        
        È CONSENTITO:
        - usare il Software internamente (anche in ambienti di produzione) all’interno
          dell’organizzazione autorizzata dal titolare del copyright;
        - modificare il Software per esigenze interne, mantenendo intatti questi avvisi.
        
        NON È CONSENTITO, senza autorizzazione scritta del titolare del copyright:
        - copiare o redistribuire il Software, in tutto o in parte, a terzi;
        - pubblicare il Software (es. repository pubblici), venderlo, sublicenziarlo,
          noleggiarlo o trasferirne i diritti;
        - reverse engineering, decompilazione o disassemblaggio laddove vietato dalla legge.
        
        ESCLUSIONE DI GARANZIA
        Il Software è fornito "COSÌ COM’È", senza alcuna garanzia, espressa o implicita,
        incluse (a titolo esemplificativo) le garanzie di commerciabilità, idoneità per
        uno scopo particolare e non violazione. L’uso è a rischio dell’utilizzatore.
        
        LIMITAZIONE DI RESPONSABILITÀ
        In nessun caso il titolare del copyright potrà essere ritenuto responsabile per
        qualsiasi danno diretto o indiretto, incidentale, speciale o consequenziale
        derivante dall’uso o dall’impossibilità di usare il Software.
        
        
        
Keywords: logging,structured-logging,json-logging,debugging,print,logger,session-id,log-codes
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Logging
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# 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.Logger` integrato
- **Log strutturati JSON**: opzionali quando `use_structured_logging=True`
- **Gestione log_code**: risoluzione automatica con fallback e mapping configurabile

## Installazione

```bash
pip install printer-logging
```

## Quickstart

### Uso diretto (classe Printer)

```python
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)

```python
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 solo `WARNING`/`ERROR`/`CRITICAL`
- `VERBOSE`: mostra `INFO+` (esclude `DEBUG`)
- `PRODUCTION`: equivalente a `VERBOSE`
- `DEBUG`: 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_code`
- `custom_logs_prefix`, `session_id`
- `context` (`state/phase/category`) se presenti
- `exception` quando applicabile

## Session ID

Gestito via `contextvars`, funziona anche in async:

```python
from printer import set_session_id, get_session_id

set_session_id("abc-123")
assert get_session_id() == "abc-123"
```

## Requisiti

- Python >= 3.9

## Documentazione completa

Per dettagli completi, esempi avanzati e configurazione, consulta il [README completo](https://github.com/tuo-repo/printer) nel repository.
