@tuain/logger
v2.0.0
Published
Logger de la plataforma Tuain sobre winston: destinos de consola, archivo con rotación y Elasticsearch, con transformadores por destino. Software propietario.
Readme
@tuain/logger
Logger de la plataforma Tuain, sobre winston.
SOFTWARE PROPIETARIO. Copyright (c) 2022-2026 Imix Latam / TUAIN. Todos los derechos reservados. Este paquete no es software libre ni de código abierto. Su uso está sujeto a la licencia del archivo LICENSE: licencia de uso no exclusiva, no transferible y revocable, sin derecho a modificar, redistribuir, sublicenciar, descompilar ni aplicar ingeniería inversa.
El acceso público en el registro de npm no otorga licencia de uso. Que
npm installfuncione sin token no convierte a este paquete en permisivo: el derecho de uso proviene únicamente del contrato escrito con el Titular.
Qué es
Arma un logger de winston con los destinos de la plataforma —consola, archivo con rotación diaria y
Elasticsearch—, cada uno con su nivel y su transformador. Agrupa los campos del evento bajo
metadata/meta para que los transformadores del consumidor los procesen.
Se distribuye como un único bundle CommonJS minificado (dist/index.js) con sus definiciones de tipos
(dist/index.d.ts). El código fuente no se publica.
Instalación
Acceso público: no se necesita token de lectura ni .npmrc.
npm install @tuain/loggerconst TuainLogger = require('@tuain/logger');Requiere Node 18 o superior. No es una clase: se invoca como función, sin new.
Uso
const TuainLogger = require('@tuain/logger');
const logger = TuainLogger({
consoleLogger: { enabled: true, level: 'silly', dateLogPattern: 'YYMMDDHHmmssSSS' },
fileLogger: { enabled: true, level: 'debug', filename: '/var/log/servicio', maxSize: '20m', maxFiles: '15' },
elasticLogger: {
enabled: true,
indexPrefix: 'servicio',
level: 'info',
node: 'https://elastic.interno:9200',
username: 'usuario',
password: process.env.ELASTIC_PASSWORD,
},
});
logger.log({ level: 'info', label: 'MiModulo', action: 'consultar', message: 'Todo bien' });Todos los destinos son opcionales. Los que no se declaren no se registran, y omitir uno no rompe la construcción. Si no se habilita ninguno, se registra un error explícito: un logger sin destinos descarta todo en silencio y eso casi siempre es una configuración mal armada.
Transformadores
Cada destino acepta su propio transformer, que recibe el evento y devuelve la línea (consola, archivo)
o el documento (Elasticsearch):
consoleLogger.transformer = (info) => `[${info.meta?.requestId}] ${info.level.toUpperCase()} - ${info.message}`;Los campos que no estén en metaAttributes se agrupan como metadatos del evento. Por omisión quedan
en la raíz: module, action, timestamp, level, message, label.
Los metadatos se exponen bajo metadata y meta, apuntando al mismo objeto. En la plataforma
convivían las dos convenciones y cambiar una habría roto la mitad de los consumidores; ahora las dos
funcionan y podar por una poda por la otra.
Cambios de la 2.0.0 que conviene leer
El destino de OpenSearch se retiró. No funcionaba: usaba la API de administración de dominios del
aws-sdk v2, que no indexa documentos, así que lanzaba TypeError en cada registro. No estaba habilitado
en ningún consumidor. Si declaras openSearchLogger.enabled: true verás un error explícito en lugar de un
silencio: tus registros no estaban viajando a OpenSearch. Usa elasticLogger.
Con eso se soltó la dependencia aws-sdk (85 MB, fuera de soporte desde 2025), que solo servía a ese
transporte.
La versión 1.4.6 no arrancaba si la configuración omitía openSearchLogger, que es el caso de casi
todos los consumidores. Corregido: ver el CHANGELOG antes de actualizar desde cualquier 1.x.
Licencia de ejecución
Desde la 2.0.0 el paquete incluye el mecanismo de verificación de licencia, inerte en esta versión: no
verifica nada y no imprime nada. A diferencia de los demás paquetes, el camino inerte es completamente
silencioso, porque aquí no hay logger al que registrar: este es el logger. Cuando el Titular lo active, la
licencia se entrega en TUAIN_LOGGER_LICENSE.
Soporte
Titular: Imix Latam / TUAIN — [email protected]
