El mismo contrato de observabilidad en Node.js, Python y .NET
No son tres librerías parecidas. Es una especificación, implementada de forma idiomática en cada lenguaje — y demostrada por el mismo fixture de tests corriendo en todas.
Tu stack habla tres lenguajes. Tus logs hablan tres dialectos.
Un request cruza tu gateway en Node, tu worker en Python y tu servicio en .NET.
Tres loggers. Tres formas de enmascarar una tarjeta. Tres nombres para el mismo correlation id. Tres respuestas a “qué pasa cuando el destino de logs se cae”.
Correlacionar ese request es reconciliar tres verdades distintas — a mano, a las 3 de la mañana, con alguien esperando.
SyntropyLog
Masking declarativo de PII, contexto que sobrevive al async y un camino de logging que nunca tira — en los lenguajes que tu stack ya usa.
| Lenguaje | Paquete | Versión | Notas |
|---|---|---|---|
| Node.js | syntropylog · npm | 2.1.0 | Motor nativo en Rust |
| Python | slpy-log · PyPI | 2.0.0 | CPython 3.7+ · motor Rust opcional |
| .NET | sl4n · NuGet | 1.1.0 | net8.0 · Native AOT |
| Java | — | — | En desarrollo |
Cómo pensamos la observabilidad
Cuatro decisiones que ya están en el código. Son la razón de que las implementaciones coincidan — y de que, donde no, no coincidan a propósito.
El camino del logging nunca tira
Si tu logger puede voltear tu handler, no es una herramienta de observabilidad: es un modo de falla nuevo. El fallo sale por hook y por contador. Nunca a quien llama.
Una estrategia de masking es dato, no código
Agregar una estrategia no debería ser escribir la misma función en cuatro lenguajes. Es un spec que el motor interpreta — y por eso la salida puede ser idéntica en todos lados.
Los nombres de wire son de tus servicios, no nuestros
Tu gateway le dice x-request-id y el sistema viejo le dice X-Correlation. Cada servicio declara su mapa y el id sobrevive la traducción. Los headers no tienen que ponerse de acuerdo.
La paridad se prueba con un test, no con un documento
Los mismos diecisiete casos de masking — literalmente el mismo archivo, byte por byte — corren en las suites de Node, Python y Java. Si una implementación deriva, su build se pone en rojo.
Empezá en tu lenguaje
Instalalo y los defaults ya enmascaran contraseñas, tokens, emails y números de tarjeta.
Node.js
npm install syntropylogPython
pip install slpy-log.NET
dotnet add package sl4nTodas las implementaciones son Apache 2.0 y no tienen dependencias de runtime obligatorias.
Hecho por desarrolladores, para desarrolladores
Nuestra pasión es resolver problemas reales. Construimos software de calidad con un compromiso fuerte con el open source y con la comunidad.
Compromiso open source
- Licencia permisiva:Todo lo que publicamos está licenciado bajo Apache 2.0.
- Contribuciones bienvenidas:Creemos en el poder de la colaboración.
- Apoyanos en GitHub:Una estrella en nuestros repositorios nos ayuda a crecer.
Otras formas de apoyar
Dar Star en GitHub
Ayuda a que más desarrolladores descubran SyntropyLog.
Ir a GitHubReportar Issues
Ayuda a mejorar el proyecto reportando bugs o sugerencias.
Ver IssuesCompartir
Comparte SyntropyLog con tu equipo y comunidad.
Compartir en X