Libreria estandar para manejo de logs estandar
Project description
Logger Tracker
Una librería de logging estandarizada para Python que proporciona trazabilidad mediante UUIDs únicos por hilo de ejecución, con soporte para salida enriquecida en consola.
Descripción
Logger Tracker es un módulo de logging diseñado para entornos concurrentes y aplicaciones web. Proporciona:
- UUIDs únicos por hilo: Cada log incluye un identificador único para trazabilidad en entornos multi-hilo
- Salida enriquecida: Usa Rich para tracebacks y formateo mejorado en consola
- Configuración automática: Se configura al importar el módulo
- Nivel de logging configurable: Soporte para variable de entorno LOG_LEVEL
- API simple: Funciones de logging estandarizadas con acceso directo
- Integración con frameworks: Soporte nativo para Flask/Werkzeug
Instalación
Instala desde PyPI:
pip install logguer-tracker
O desde el código fuente:
git clone https://github.com/tu-usuario/logguer-tracker.git
cd logguer-tracker
pip install -e .
Configuración
Nivel de Logging
El nivel de logging se puede configurar mediante la variable de entorno LOG_LEVEL. Si no se establece, por defecto es DEBUG.
Niveles disponibles: DEBUG, INFO, WARNING, ERROR, CRITICAL
Ejemplos de configuración:
En Linux/macOS:
export LOG_LEVEL=INFO
python tu_aplicacion.py
En Windows (Command Prompt):
set LOG_LEVEL=INFO
python tu_aplicacion.py
En Windows (PowerShell):
$env:LOG_LEVEL = 'INFO'
python tu_aplicacion.py
En un script Python:
import os
os.environ['LOG_LEVEL'] = 'WARNING'
import logger_tracker # Importar después de configurar la variable
En un archivo .env (usando python-dotenv):
pip install python-dotenv
from dotenv import load_dotenv
load_dotenv()
import logger_tracker
Archivo .env:
LOG_LEVEL=INFO
En Docker:
ENV LOG_LEVEL=WARNING
En docker-compose.yml:
services:
tu_app:
environment:
- LOG_LEVEL=ERROR
Uso Básico
Importación y configuración automática
Simplemente importa el módulo para configurar el logging automáticamente:
import logger_tracker
# El logging ya está configurado con UUIDs y Rich handler
Uso de la API principal
from logger_tracker import get_logger
# Obtener un logger con funciones de logging
logger = get_logger("mi_modulo")
logger["info"]("Mensaje informativo")
logger["debug"]("Mensaje de debug")
logger["warning"]("Mensaje de advertencia")
logger["error"]("Mensaje de error")
logger["critical"]("Mensaje crítico")
Uso de funciones legacy
Para compatibilidad con código existente:
from logger_tracker import logg_info, logg_debug, logg_warning, logg_error, logg_critical
logg_info("Mensaje informativo")
logg_debug("Mensaje de debug")
logg_warning("Mensaje de advertencia")
logg_error("Mensaje de error")
logg_critical("Mensaje crítico")
Características
- Thread-safe: UUIDs únicos por hilo de ejecución
- Trazabilidad: Cada log incluye un UUID para seguimiento
- Salida enriquecida: Tracebacks coloreados y formateados con Rich
- Configuración automática: No requiere configuración manual
- Nivel de logging configurable: Control del nivel mediante variable de entorno LOG_LEVEL
- Integración con Flask: Soporte automático para logging de Werkzeug
- API flexible: Tanto dict-based como funciones directas
API
Funciones principales
setup_logging(): Configura el sistema de logging (llamado automáticamente al importar)get_logger(name: str) -> dict: Devuelve un diccionario con funciones de loggingattach_logger_to_werkzeug(): Integra el logging con Flask/Werkzeug
Funciones legacy
logg_info(message)logg_debug(message)logg_warning(message)logg_error(message)logg_critical(message)
Ejemplos
En una aplicación Flask
from flask import Flask
from logger_tracker import get_logger, attach_logger_to_werkzeug
app = Flask(__name__)
# Configurar logging para Flask
attach_logger_to_werkzeug()
logger = get_logger("flask_app")
@app.route('/')
def hello():
logger["info"]("Solicitud a la ruta principal")
return "Hello World!"
if __name__ == '__main__':
app.run()
En un script multi-hilo
import threading
import time
from logger_tracker import get_logger
def worker(worker_id):
logger = get_logger(f"worker_{worker_id}")
logger["info"](f"Trabajador {worker_id} iniciado")
time.sleep(1)
logger["info"](f"Trabajador {worker_id} finalizado")
# Crear múltiples hilos
threads = []
for i in range(3):
t = threading.Thread(target=worker, args=(i,))
threads.append(t)
t.start()
for t in threads:
t.join()
Cada hilo tendrá su propio UUID en los logs, permitiendo trazabilidad completa.
Formato de salida
Los logs se muestran en el formato:
[UUID] Mensaje
Ejemplo:
[550e8400-e29b-41d4-a716-446655440000] Aplicación iniciada
[550e8400-e29b-41d4-a716-446655440000] Procesando solicitud
[6ba7b810-9dad-11d1-80b4-00c04fd430c8] Nuevo hilo iniciado
Requisitos
- Python >= 3.13
- rich
- pytest (para tests)
Licencia
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
Contribución
Para contribuir:
- Fork el repositorio
- Crea una rama para tu feature
- Ejecuta los tests:
pytest - Envía un pull request
Soporte
Para reportar bugs o solicitar features, usa los issues de GitHub.
Project details
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 logger_tracker-1.0.10.tar.gz.
File metadata
- Download URL: logger_tracker-1.0.10.tar.gz
- Upload date:
- Size: 4.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.4 CPython/3.13.12 Linux/5.15.154+
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c59abb2d5a6628ebae3c529097ebb080053307446d0ae00a455119c0b0890e5
|
|
| MD5 |
f8d237c7325dd902969fe9123bc6feaf
|
|
| BLAKE2b-256 |
145654ed88a29a5415db16d8fc7035145877de96f87c157c6d5eb7245af3e2a8
|
File details
Details for the file logger_tracker-1.0.10-py3-none-any.whl.
File metadata
- Download URL: logger_tracker-1.0.10-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.4 CPython/3.13.12 Linux/5.15.154+
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87f0381793b5c8a66e8f94501f2cc8bfcddaa6c32f15d022137716b38f365e02
|
|
| MD5 |
cf707606b6d4271cdbbc16101e24b9a5
|
|
| BLAKE2b-256 |
4c4745d2c5edbfca7e5f6253a1a543fb09e97d308cc193b30a6baa2cce0529bc
|