@incentech/logger
v2.3.1
Published
Universal logger para Node.js, React, Vite y navegadores - JavaScript puro ESM6
Downloads
334
Maintainers
Readme
@incentech/logger
Un logger potente y configurable para aplicaciones Node.js y navegadores con sistema de filtros avanzado para control granular de logs.
🚀 Características
- 📝 Múltiples niveles de log (error, warn, success, info, debug, trace)
- 🎯 Sistema de filtros avanzado con patrones
archivo.funcion - 📁 Salida a archivo y consola
- 🎨 Formato bonito con colores (Node.js y navegador)
- 🔒 Escritura segura en archivos (thread-safe)
- 🧪 Compatible con entornos de prueba
- ⚡ Ligero y rápido
- 🔄 Soporta tanto CommonJS como ES modules
- 🌐 Universal: Node.js, React, Vite y navegadores
- 💗 Sistema de heartbit con contadores jerárquicos
- 🔧 Altamente configurable
Instalación
npm install @incentech/logger
# o
yarn add @incentech/logger🎯 Sistema de Filtros Avanzado (NUEVO)
El logger ahora incluye un potente sistema de filtros que te permite controlar exactamente qué logs se muestran usando patrones de archivo.funcion:
Configuración de filtros
import { createLogger } from '@incentech/logger';
const logger = createLogger({
consolar: [
"allXXX", // Modo debug total (equivale a "all")
"API.all", // Todos los logs del archivo API
"all.loginUser", // Función loginUser en todos los archivos
"DATABASE.connect", // Solo DATABASE.connect específico
"FLOW.all" // Todos los logs del archivo FLOW
],
noConsolar: [
"API.debugInfo", // No mostrar API.debugInfo (tiene prioridad)
"nonesTobleronesXXX" // Archivo completo silenciado
]
});Uso con contexto
// Estos logs SÍ se mostrarán (están en consolar)
logger.info("Conectando a BD", "DATABASE", "connect");
logger.success("Login exitoso", "AUTH", "loginUser");
logger.debug("Procesando request", "API", "processData");
// Este NO se mostrará (está en noConsolar)
logger.debug("Info detallada", "API", "debugInfo");
// Este NO se mostrará (no está en consolar)
logger.warn("Cache expirado", "CACHE", "cleanup");
// Los errores SIEMPRE se muestran (salvo que estén en noConsolar)
logger.error("Error crítico", "ANY", "anyFunction");Patrones soportados
"all"- Mostrar todos los logs (modo debug total)"archivo.all"- Todos los logs de un archivo específico"all.funcion"- Una función específica en todos los archivos"archivo.funcion"- Contexto específico- En
noConsolartienen prioridad sobreconsolar
💗 Sistema Heartbit
Para debuggear flujos complejos con contadores jerárquicos:
logger.heartbit("Inicio del proceso", 0); // HEARTBIT 1
logger.info("Procesando...", "MAIN", "process");
logger.heartbit("Sub-proceso A", 1); // HEARTBIT 1.1
logger.info("Validando...", "VALIDATOR", "check");
logger.heartbit("Sub-proceso B", 1); // HEARTBIT 1.2
logger.success("Completado", "MAIN", "finish");
logger.heartbit("Nuevo proceso", 0); // HEARTBIT 2Instalación
npm install @incentech/logger
# o
yarn add @incentech/loggerUso básico
Importación
// Usando ES modules
import { logger, createLogger } from '@incentech/logger';
// O usando CommonJS
const { logger, createLogger } = require('@incentech/logger');Ejemplo básico (sin filtros)
// Uso tradicional sin contexto (compatible con versión anterior)
logger.info('Iniciando la aplicación...');
logger.debug('Modo depuración activado');
logger.success('¡Conexión exitosa con la base de datos!');
logger.warn('El archivo de configuración no existe, usando valores por defecto');
logger.error('Error al procesar la solicitud');Ejemplo con filtros avanzados
// Crear logger con filtros
const apiLogger = createLogger({
consolar: ["API.all", "DATABASE.connect", "all.authenticate"],
noConsolar: ["API.debugDetails"]
});
// Logs con contexto archivo.funcion
apiLogger.info("Iniciando API", "API", "start"); // ✅ Se muestra
apiLogger.debug("Detalles internos", "API", "debugDetails"); // ❌ No se muestra
apiLogger.success("Conexión OK", "DATABASE", "connect"); // ✅ Se muestra
apiLogger.info("Autenticando", "AUTH", "authenticate"); // ✅ Se muestraConfiguración avanzada
Logger con todas las opciones
const loggerPersonalizado = createLogger({
// 🎯 Sistema de filtros (NUEVO)
consolar: [
"API.all", // Todo el archivo API
"all.authenticate", // authenticate en todos los archivos
"DATABASE.connect" // Solo DATABASE.connect
],
noConsolar: [
"API.debugInfo" // Silenciar este específico
],
// 📁 Configuración de archivos (Node.js)
logDir: './logs',
logToFile: true,
separateLogFiles: false,
logFiles: {
main: 'mi-aplicacion.log',
error: 'errores.log',
info: 'informacion.log',
debug: 'debug.log',
},
// 🎨 Presentación
logToConsole: true,
colors: true,
logLevel: 'debug',
// 🏷️ Contexto global
context: {
app: 'Mi Aplicación',
version: '1.0.0',
ambiente: process.env.NODE_ENV || 'desarrollo',
},
});Configuración dinámica
// Cambiar filtros en tiempo de ejecución
logger.configure(
["all"], // Consolar: modo debug total
["VERBOSE.all"] // NoConsolar: silenciar módulo verbose
);🌐 Compatibilidad Universal
Node.js
import { logger } from '@incentech/logger';
logger.info("Funciona en Node.js", "SERVER", "start");React/Vite
import { logger } from '@incentech/logger';
function MyComponent() {
logger.debug("Componente renderizado", "MyComponent", "render");
return <div>Hello</div>;
}Navegador (UMD)
<script src="node_modules/@incentech/logger/dist/index.umd.js"></script>
<script>
const { logger } = IncenTechLogger;
logger.info("Funciona en navegador", "PAGE", "load");
</script>Niveles de log
El logger soporta los siguientes niveles de log (en orden de severidad):
error: Errores que causan que la aplicación fallewarn: Advertencias sobre situaciones inesperadassuccess: Operaciones exitosasinfo: Información general de la aplicacióndebug: Información detallada para depuracióntrace: Trazas detalladas de ejecución
Uso en pruebas
En entornos de prueba, puedes configurar el logger para que sea menos verboso:
const testLogger = createLogger({
logToConsole: false,
logToFile: false,
logLevel: 'error', // Solo muestra errores en pruebas
});O usar el modo de prueba que desactiva la escritura en archivos:
process.env.NODE_ENV = 'test';
const { logger } = require('@incentech/logger');Contribuir
Las contribuciones son bienvenidas. Por favor, lee las pautas de contribución para más detalles.
Licencia
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles. const customLogger = createLogger({ logLevel: 'info', // default: 'info' logToFile: true, // default: true logToConsole: true, // default: true logDir: './logs', // default: './logs' colors: true // default: true });
### Log Levels
Available log levels (from highest to lowest priority):
- `error` - Errors that need immediate attention
- `warn` - Potentially harmful situations
- `success` - Success messages (custom level)
- `info` - General information
- `debug` - Debug information
- `trace` - Very detailed debug information
## API
### Methods
- `logger.error(message, ...args)`
- `logger.warn(message, ...args)`
- `logger.success(message, ...args)`
- `logger.info(message, ...args)`
- `logger.debug(message, ...args)`
- `logger.trace(message, ...args)`
- `logger.child(options)` - Create a child logger with inherited settings
### Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| logLevel | string | 'info' | Minimum log level to output |
| logToFile | boolean | true | Whether to log to files |
| logToConsole | boolean | true | Whether to log to console |
| logDir | string | './logs' | Directory to store log files |
| colors | boolean | true | Enable/disable colored output |
## Advanced Usage
### Child Loggers
Create a child logger with custom settings:
```javascript
const childLogger = logger.child({
logLevel: 'debug',
logDir: './debug-logs'
});
childLogger.debug('This will be logged to debug-logs/');Environment Variables
You can configure the logger using environment variables:
LOG_LEVEL=debug
LOG_TO_FILE=true
LOG_TO_CONSOLE=true
LOG_DIR=./custom-logsLicense
MIT
// 🎯 CAMBIAR NIVEL DE LOG window.TokeneaLogger.changeLevel('debug'); // debug, info, warn, error, silent window.TokeneaLogger.changeLevel('silent'); // Silenciar todo
// 🎯 HABILITAR/DESHABILITAR LOGGER window.TokeneaLogger.toggleEnabled();
// 🎯 VER CONFIGURACIÓN ACTUAL console.table(window.TokeneaLogger.config);
// 🎯 LIMPIAR TODOS LOS OVERRIDES window.TokeneaLogger.clearOverrides();
// 🎯 ACCESO DIRECTO AL LOGGER window.TokeneaLogger.logger.success('¡Hola desde consola!');
