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

@minervajs/auditlogs

v1.0.2

Published

Servicio de Registros de consola, es un módulo de gestión de mensajes para su uso en auditoria, depuración, informativos, avisos y error.

Downloads

233

Readme

@minervajs/auditlogs

Módulo de auditoría y logging técnico para el ecosistema MinervaJS, diseñado para entornos profesionales, empresariales y orientados a seguridad (SOC).

Este módulo unifica en una sola pieza:

  • Logger técnico avanzado (consola + archivos)
  • Auditoría estructurada
  • Rotación automática de archivos
  • Formateo personalizable
  • Integración con Webhooks
  • Compatibilidad con Slack
  • Integración con SIEM / Azure Sentinel
  • Alertas automáticas (respuesta a incidentes)

📦 Instalación

npm install @minervajs/auditlogs

En la instalacion, puedes hacer uso del archivo muestra que esta en \node_modules\minervajs-auditlogs\example\index.js


🧠 Conceptos fundamentales

Logger técnico

El logger técnico está orientado a desarrolladores y operadores y proporcionar una forma personalizada de registrar mensajes en la consola con colores por nivel y opcionalmente guardarlos en archivos de log rotativos basados en el número de líneas y se utiliza para:

  • Depuración
  • Diagnóstico
  • Seguimiento técnico de la aplicación

Características:

  • Registro de logs con niveles (info, debug, warn, error).
  • Colores opcionales en la consola para diferenciar niveles.
  • Escritura opcional a disco
  • Rotación automática de archivos basada en el número de líneas.
  • Múltiples instancias simultáneas

Auditoría

La auditoría está orientada a seguridad, cumplimiento y trazabilidad.

A diferencia del logger técnico:

  • Es estructurada (JSON)
  • Tiene niveles de impacto
  • Puede enviarse a sistemas externos
  • Permite reacción automática

🚦 Niveles de auditoría

| Nivel | Descripción | Significado | Ejemplos | | -------- | ----------------------------- | ------------- | ------------------------ | | LOW | Eventos informativos | Seguimiento | Consultas, listados | | MEDIUM | Eventos relevantes | Cambio normal | CREATE / UPDATE | | HIGH | Eventos sensibles | Riesgo | DELETE, cambios críticos | | CRITICAL | Eventos críticos de seguridad | Seguridad | Login admin, permisos |

Estos niveles permiten filtrar, alertar y reaccionar de forma controlada.


⚙️ Inicialización básica

const AuditLogs = require('@minervajs/auditlogs');

const audit = new AuditLogs('MiAplicacion', {
  audit: {
    minAuditLevel: 'HIGH'
  }
});

El primer parámetro es el prefijo, usado para identificar la fuente del log, Reemplaza 'MiAplicacion' con un prefijo descriptivo para tu aplicación o módulo para identificar la fuente. Por defecto es 'AuditLogs' si se omitiera.


Parámetros de Configuración.

El método permite configurar el 'MinervaJS Audit Logs' en su primera llamada. Las llamadas posteriores devolverán la misma instancia con la configuración inicial.

📝 Uso del logger técnico

audit.info('Aplicación iniciada');
audit.debug('Configuración cargada');
audit.warn('Uso elevado de memoria');
audit.error('Error de conexión a base de datos');

Niveles de log técnico

  • info: (information) Información general
  • debug: Detalles para desarrollo y la depuración
  • warn: (warning) Advertencias
  • error: Errores

Los mensajes de cada nivel se mostrarán en la consola con un color distintivo (si la opción useColors está habilitada)

  • useColors (opcional): Un boolean que indica si se deben usar colores en la salida de la consola. Por defecto es true.

📂 Escritura a disco y rotación de archivos

Configuración:

const audit = new AuditLogs('MiServicio', {
  filenameBase: 'app.log',
  writeToDisk: true,
  maxLines: 5000,
  useColors: true
});

Rotación de Archivos

  • filenameBase (opcional): Un string que define el nombre base del archivo de log. Los archivos rotados se nombrarán añadiendo un sufijo numérico (ej., app.log, app-1.log, app-2.log, etc). Por defecto es app.log.
  • maxLines (opcional): Un number que especifica el número máximo de líneas que un archivo de log puede alcanzar antes de que se rote y se cree uno nuevo. Por defecto es 10000, la cantidad minima es 100 si se ha habilitado el banderin debuger=true permite que esta cantidad sea menor a 100.
  • writeToDisk (opcional): Un boolean que controla si los logs deben escribirse en el archivo. Si es true, se escribirán; si es false, se omitirá la escritura a disco. Por defecto es false.
  • debuger (opcional): un banderin que habilita opciones para depuración, como el poder definir maxLines con menos de 100 lineas.

Notas:

  • En cada Instancia, los primeras Lineas, indicaran la Configuración con que inicia 'MinervaJS Audit Logs' y son tambien parte de la cuota de maxLines.
  • El llegar a la cuota de rotación de archivo maxLines, se adicionara una linea al final del archivo indicando fin del mismo. por defecto cada archivo tendria maxLines + 1.

La generacion de archivos

Archivos Generados por Audit Logs


🎨 Formato personalizable

Puedes definir tu propio formato:

format: '%colorbegin%[%timestamp%] [%level%] [%prefix%]%colorend% %message%'

Marcadores disponibles:

  • %colorbegin% / %colorend%

  • %timestamp%

  • %level%

  • %prefix%

  • %message%

  • %currentline% (solo en archivo)

  • format (opcional): Permitir a los usuarios definir su propio formato para las líneas de log. Esto podría incluir el orden de los elementos (timestamp, prefijo, nivel, mensaje), la inclusión de información adicional (como el nombre del archivo y la línea donde se generó el log), o formatos más estructurados (como JSON). El formato por defecto es '[%timestamp%] [%prefix%]%colorbegin% [%level%] %message% %colorend%'

    • %colorbegin% / %colorend%, indica inicio y fin de uso de color respectivamente
    • %timestamp%, marcador para fecha y hora
    • %level%, marcador de nivel
    • %prefix%, marcador para la inclusión de uso de identificador de Aplicativo o modulo
    • %message%, marcador para el contenido del Mensaje
    • %currentline%, El número de línea actual en el archivo de log (Solo se visualiza en archivo)

Ejemplo formato tipo JSON:

format: '%colorbegin%{hora:"%timestamp%", nivel:"%level%", prefijo:"%prefix%"}%colorend% {msg:"%message%"}'

Salida en consola

Consola Audit Logs


🔍 Auditoría estructurada

audit.audit({
  level: 'CRITICAL',
  action: 'DELETE',
  entity: 'USERS',
  entityId: 15,
  userId: 1,
  username: 'admin',
  ip: '10.0.0.5',
  source: 'API'
});

Campos comunes:

  • level
  • action
  • entity
  • entityId
  • userId / username
  • ip
  • source
  • timestamp (automático)

🔒 Filtro global: minAuditLevel

Permite definir desde qué nivel se registra la auditoría.

audit: {
  minAuditLevel: 'HIGH'
}

Eventos por debajo del nivel configurado se ignoran silenciosamente.


🌐 Webhook

Permite enviar eventos de auditoría a sistemas externos.

audit: {
  webhook: {
    enabled: true,
    url: 'https://endpoint.example.com',
    format: 'siem',
    levels: ['HIGH', 'CRITICAL'],
    timeout: 5000
  }
}

💬 Slack

Compatible mediante Webhook nativo de Slack.

audit: {
  webhook: {
    enabled: true,
    url: 'https://hooks.slack.com/services/XXX',
    format: 'slack',
    levels: ['CRITICAL']
  }
}

Los mensajes están optimizados para consumo humano.


🧩 SIEM / Azure Sentinel

Formato JSON compatible con SIEM y especialmente Azure Sentinel.

Características:

  • Campos planos
  • Timestamp normalizado
  • Compatible con KQL

Ejemplo:

MinervaJS_AuditLogs_CL
| where Level == "CRITICAL"

🚨 Alertas automáticas (SOC)

Permite ejecutar acciones automáticas cuando ocurren eventos críticos.

const blockUserAlert = async (event) => {
  if (event.action === 'DELETE' && event.entity === 'USERS') {
    console.log(`Usuario ${event.userId} bloqueado automáticamente`);
  }
};

const audit = new AuditLogs('MiApp', {
  audit: {
    alerts: {
      enabled: true,
      levels: ['CRITICAL'],
      handlers: [blockUserAlert]
    }
  }
});

Las alertas:

  • Son opcionales
  • No bloquean el flujo
  • No lanzan excepciones

🛡️ SOC Ready

Este módulo está preparado para integrarse con un Security Operations Center (SOC):

  • Genera eventos estructurados
  • Permite correlación
  • Soporta respuesta automática

🧪 Pruebas

Pendiente de implementación con Jest.


📄 Licencia

BSD-2-Clause