Download the PHP package mongoose-studio/phobos-framework-logger without Composer
On this page you can find all versions of the php package mongoose-studio/phobos-framework-logger. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download mongoose-studio/phobos-framework-logger
More information about mongoose-studio/phobos-framework-logger
Files in mongoose-studio/phobos-framework-logger
Package phobos-framework-logger
Short Description Phobos Framework Logger - Structured JSON logging with trace context (PSR-3)
License MIT
Informations about the package phobos-framework-logger
Phobos Framework - Logger
Librería satélite opt-in de logging estructurado para Phobos Framework. Logs JSON line-delimited con contexto de traza automático (trace_id/request_id), redacción de datos sensibles y writers intercambiables. Implementa PSR-3 sin arrastrar Monolog ni ninguna otra dependencia pesada — fiel al minimalismo del núcleo, que a propósito no trae logger.
Características
- 📋 PSR-3 completo -
Psr\Log\LoggerInterface, interpola placeholders{clave}, valida niveles - 🧱 JSON estructurado - una línea = un objeto JSON, listo para Loki/agentes de logs (patrón K8s)
- 🔗 Contexto de traza -
trace_id/request_idinyectados en cada registro desde unLogContextrequest-scoped - 🌐 W3C Trace Context - adopta el
traceparententrante (Kong/OTel) y lo propaga saliente contraceParent() - 🕵️ Redacción de secretos - enmascara claves sensibles (
password,token,authorization, ...) y patrones sueltos (JWT, PAN) - 🚦 Access-log integrado -
request.handledcon método, path, status y duración; nivel según status (4xx=warning, 5xx=error) - 🖥️ Writers intercambiables -
stdout(prod),pretty(dev, coloreado),file,memory(tests),null - 💥 Excepciones expandidas -
context['exception']con unThrowablese expande a{class, message, file, line, trace} - 🧪 Testeable por diseño - DI por constructor en todo;
MemoryWriterpara afirmar logs en tests - 🚫 Cero magia - sin facades, sin estado estático: la forma canónica de Phobos
Instalación
Dependencias
mongoose-studio/phobos-framework^3.1psr/log^3.0- PHP >= 8.4
Uso
1. Registrar el provider (módulo raíz)
2. Middleware global (contexto de traza + access-log)
Primero en la cadena, para que todo lo demás ya loguee con contexto:
3. Loguear desde un service (inyección por constructor)
Depende de LoggerInterface (PSR-3), no de la clase concreta: testeable y reemplazable.
4. Excepciones no manejadas (entry point)
5. Propagar la traza hacia afuera
Formato del registro
tenant_id/actor_id se promueven a la raíz: se fijan una vez en el LogContext (p. ej. en el middleware de auth) y salen en todos los registros del request.
Configuración (config/logging.php)
Todo es opcional; sin archivo, los defaults funcionan.
| Writer | Uso | Salida |
|---|---|---|
stdout |
Producción (K8s) | JSON line-delimited a stdout; el agente (Promtail/Grafana Agent) lo lleva a Loki |
pretty |
Desarrollo | Consola coloreada y legible |
file |
VPS/scripts | JSON append a archivo con lock (la rotación es de logrotate) |
memory |
Tests | Acumula en memoria (records(), last(), clear()) |
null |
Apagado | Descarta todo |
Redacción
Sin PII ni secretos en los logs, en ningún ambiente. Dos mecanismos:
- Por clave (recursivo, insensible a mayúsculas, por contención):
password,card_number,reset_token_hash... →•••••• - Por patrón (sobre strings sueltos): JWT y PAN de tarjeta se enmascaran aunque la clave no delate nada
Testing (en tu proyecto)
Bindea el writer de memoria y afirma sobre lo logueado:
Relación con el Observer del core
El Observer (trace(), Observer::dumpFormatted()) es una línea de tiempo en memoria para depurar un request puntual; no persiste ni sale del proceso. Este Logger es para producción: estructurado, persistente (stdout → Loki) y correlacionado por trace_id. Son complementarios.
Tests de la librería
Licencia
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
Autor
Marcel Rojas
[email protected]
Mongoose Studio
Contribuciones
Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/amazing-feature) - Commit tus cambios (
git commit -m 'Add amazing feature') - Push a la rama (
git push origin feature/amazing-feature) - Abre un Pull Request
Phobos Framework by Mongoose Studio