npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@incentech/logger

v2.3.1

Published

Universal logger para Node.js, React, Vite y navegadores - JavaScript puro ESM6

Downloads

334

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 noConsolar tienen prioridad sobre consolar

💗 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 2

Instalación

npm install @incentech/logger
# o
yarn add @incentech/logger

Uso 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 muestra

Configuració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 falle
  • warn: Advertencias sobre situaciones inesperadas
  • success: Operaciones exitosas
  • info: Información general de la aplicación
  • debug: Información detallada para depuración
  • trace: 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-logs

License

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!');