logologo
Empezar
Manual
Desarrollo
Plugins
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Empezar
Manual
Desarrollo
Plugins
API
logologo

Inicio rápido

Resumen de desarrollo de plugins
Escribir el primer plugin
Estructura de directorios del proyecto

Desarrollo del lado del servidor

Visión general
Plugin
Colecciones
Operaciones de base de datos
Gestión de fuentes de datos
Gestión de recursos
Control de permisos (ACL)
Middleware
Caché
Evento
Contexto de solicitud
Migración (Script de actualización)
Registro (Logger)
Internacionalización (I18n)
Línea de comandos (Command)
Gestión de tareas programadas
Pruebas

Desarrollo del lado del cliente

Visión general
Plugin
Contexto
Enrutador (Router)
Control de permisos (ACL)
Gestión de fuentes de datos
Recurso
Solicitud
Estilos y temas
Registro (Logger)
Internacionalización (I18n)
Pruebas

Otros

Guía de actualización de plugins
Lista de idiomas
Gestión de dependencias
Compilación
Previous PageEstilos y temas
Next PageInternacionalización (I18n)
Aviso de traducción por IA

Esta documentación ha sido traducida automáticamente por IA.

#Logger

NocoBase le ofrece un sistema de registro (logger) de alto rendimiento basado en pino. En cualquier lugar donde tenga acceso al context, puede obtener una instancia del logger a través de ctx.logger para registrar los eventos clave durante la ejecución de sus plugins o del sistema.

#Uso Básico

// Registra errores fatales (ej.: fallo de inicialización)
ctx.logger.fatal('Aplicación inicializada con errores', { error });

// Registra errores generales (ej.: errores en solicitudes API)
ctx.logger.error('Fallo al cargar los datos', { status, message });

// Registra advertencias (ej.: riesgos de rendimiento o acciones inesperadas del usuario)
ctx.logger.warn('El formulario actual contiene cambios sin guardar');

// Registra información general de ejecución (ej.: componente cargado)
ctx.logger.info('Componente de perfil de usuario cargado');

// Registra información de depuración (ej.: cambios de estado)
ctx.logger.debug('Estado actual del usuario', { user });

// Registra información de rastreo detallada (ej.: flujo de renderizado)
ctx.logger.trace('Componente renderizado', { component: 'UserProfile' });

Estos métodos corresponden a diferentes niveles de registro (de mayor a menor prioridad):

NivelMétodoDescripción
fatalctx.logger.fatal()Errores fatales, que suelen provocar la salida del programa.
errorctx.logger.error()Errores, indicando fallos en solicitudes u operaciones.
warnctx.logger.warn()Advertencias, alertando sobre riesgos potenciales o situaciones inesperadas.
infoctx.logger.info()Información de ejecución regular.
debugctx.logger.debug()Información de depuración, útil para entornos de desarrollo.
tracectx.logger.trace()Información de rastreo detallada, generalmente para diagnósticos profundos.

#Formato del Registro

Cada salida de registro tiene un formato JSON estructurado y, por defecto, contiene los siguientes campos:

CampoTipoDescripción
levelnumberNivel del registro
timenumberMarca de tiempo (milisegundos)
pidnumberID del proceso
hostnamestringNombre del host
msgstringMensaje del registro
OtrosobjectInformación de contexto personalizada

Salida de ejemplo:

{
  "level": 30,
  "time": 1730540153064,
  "pid": 12765,
  "hostname": "nocobase.local",
  "msg": "HelloModel rendered",
  "a": "a"
}

#Vinculación de Contexto

ctx.logger inyecta automáticamente información de contexto, como el plugin actual, el módulo o la fuente de la solicitud, lo que permite rastrear el origen de los registros con mayor precisión.

plugin.context.logger.info('Plugin initialized');
model.context.logger.error('Model validation failed', { model: 'User' });

Salida de ejemplo (con contexto):

{
  "level": 30,
  "msg": "Plugin initialized",
  "plugin": "plugin-audit-trail"
}

#Logger Personalizado

Puede crear instancias de logger personalizadas en sus plugins, heredando o extendiendo las configuraciones predeterminadas:

const logger = ctx.logger.child({ module: 'MyPlugin' });
logger.info('Submodule started');

Los loggers hijos heredan la configuración del logger principal y adjuntan automáticamente el contexto.

#Jerarquía de Niveles de Registro

Los niveles de registro de Pino siguen una definición numérica de mayor a menor, donde los números más pequeños indican una prioridad más baja.
A continuación, se presenta la tabla completa de la jerarquía de niveles de registro:

Nombre del NivelValorNombre del MétodoDescripción
fatal60logger.fatal()Errores fatales, que suelen impedir que el programa continúe ejecutándose.
error50logger.error()Errores generales, indicando fallos en solicitudes o excepciones en operaciones.
warn40logger.warn()Advertencias, alertando sobre riesgos potenciales o situaciones inesperadas.
info30logger.info()Información común, registrando el estado del sistema u operaciones normales.
debug20logger.debug()Información de depuración, utilizada en la fase de desarrollo para analizar problemas.
trace10logger.trace()Información de rastreo detallada, utilizada para diagnósticos en profundidad.
silent-Infinity(sin método correspondiente)Desactiva toda la salida de registros.

Pino solo emitirá registros que sean mayores o iguales al level configurado actualmente. Por ejemplo, si el nivel de registro es info, los registros de debug y trace serán ignorados.

#Mejores Prácticas en el Desarrollo de Plugins

  1. Utilice el Logger de Contexto
    Utilice ctx.logger en el contexto de sus plugins, modelos o aplicaciones para que la información de origen se adjunte automáticamente.

  2. Distinga los Niveles de Registro

    • Utilice error para registrar excepciones de negocio.
    • Utilice info para registrar cambios de estado.
    • Utilice debug para registrar información de depuración durante el desarrollo.
  3. Evite el Registro Excesivo
    Especialmente en los niveles debug y trace, se recomienda activarlos únicamente en entornos de desarrollo.

  4. Utilice Datos Estructurados
    Pase parámetros de objeto en lugar de concatenar cadenas de texto; esto facilita el análisis y filtrado de los registros.

Siguiendo estas prácticas, los desarrolladores pueden rastrear la ejecución de los plugins de manera más eficiente, solucionar problemas y mantener un sistema de registro estructurado y extensible.