@microsoft/agents-a365-observability package

Clases

Agent365ExporterOptions

Número máximo de intervalos por lote de exportación.

BaggageBuilder

Generador de equipaje por solicitud para la propagación de contexto de OpenTelemetry.

Esta clase proporciona una API fluida para establecer valores de equipaje que se propagarán en el contexto de OpenTelemetry.

Ejemplo

const scope = new BaggageBuilder()
  .tenantId("tenant-123")
  .agentId("agent-456")
  .build();

scope.enter();
// Baggage is set in this context
// ... do work ...
scope.exit();
// Baggage is restored after exiting the context
BaggageScope

Administrador de contexto para el ámbito del equipaje.

Esta clase administra el ciclo de vida de los valores de equipaje y los establece al entrar y restaurar el contexto anterior al salir.

Builder

Generador para configurar el agente 365 con seguimiento de OpenTelemetry

ExecuteToolScope

Proporciona el ámbito de seguimiento de OpenTelemetry para las operaciones de ejecución de herramientas de IA.

InferenceScope

Proporciona el ámbito de seguimiento de OpenTelemetry para las operaciones de inferencia de IA generativas.

InvokeAgentScope

Proporciona el ámbito de seguimiento de OpenTelemetry para las operaciones de invocación del agente de IA.

ObservabilityConfiguration

Configuración del paquete de observabilidad. Hereda la configuración del entorno de ejecución y agrega configuraciones específicas de observabilidad.

ObservabilityManager

Punto de entrada principal para el Agente 365 que proporciona seguimiento de OpenTelemetry para agentes y herramientas de IA

OpenTelemetryConstants

Constantes de OpenTelemetry para el Agente 365

OpenTelemetryScope

Clase base para ámbitos de seguimiento de OpenTelemetry

OutputScope

Proporciona el ámbito de seguimiento de OpenTelemetry para el seguimiento de mensajes de salida con la vinculación del intervalo primario.

PerRequestSpanProcessorConfiguration

Configuración de PerRequestSpanProcessor. Hereda la configuración del entorno de ejecución (clusterCategory, isNodeEnvDevelopment) y agrega límites de protección de procesador por solicitud.

Esto se separa de ObservabilityConfiguration porque PerRequestSpanProcessor solo se usa en escenarios específicos y esta configuración no debe exponerse en la configuración común ObservabilityConfiguration.

Interfaces

AgentDetails

Detalles sobre un agente de IA

BlobPart

Datos binarios insertados (codificados en base64).

BuilderOptions

Opciones de configuración del Generador de observabilidad del Agente 365

CallerDetails

Detalles del autor de la llamada para la creación del ámbito. Admite autores de llamadas humanas, llamadores de agente o ambos (A2A con un humano en la cadena).

Nota de migración: En la versión 1, el nombre CallerDetails al que se hace referencia a la identidad del autor de la llamada humana (ahora UserDetails). En la versión 2 se ha reasignado como contenedor que agrupa la información del autor de llamada de agente y humano.

Consulte UserDetails : identidad del autor de la llamada humana (anteriormente CallerDetails) Consulte la sección CHANGELOG.md: cambios importantes para obtener instrucciones sobre la migración.

Channel

Representa el canal de una invocación.

ChatMessage

Un mensaje de entrada enviado a un modelo (convenciones semánticas de OTEL gen-ai).

FilePart

Referencia a un archivo cargado previamente.

GenericPart

Parte extensible para tipos personalizados y futuros.

GenericServerToolCall

Detalles de la llamada de la herramienta servidor extensible con un discriminador de tipos.

GenericServerToolCallResponse

Respuesta de llamada de herramienta de servidor extensible con un discriminador de tipos.

ILogger

Interfaz de registrador personalizada para la observabilidad del Agente 365 Implementa esta interfaz para admitir los back-end de registro

InferenceDetails

Detalles de una llamada de inferencia

InferenceResponse

Detalles para registrar la respuesta desde una llamada de inferencia

InputMessages
InvokeAgentScopeDetails

Detalles para invocar el ámbito del agente.

OutputMessage

Un mensaje de salida generado por un modelo (convenciones semánticas de OTEL gen-ai).

OutputMessages
OutputResponse

Representa una respuesta que contiene mensajes de salida de un agente. Se usa con OutputScope para el seguimiento de mensajes de salida. Acepta cadenas sin formato, objetos OutputMessage estructurados de OTEL o un dict sin procesar (tratado como resultado de llamada de herramienta por especificación de OTEL).

ParentSpanRef

Referencia a un intervalo primario para la vinculación explícita de elementos primarios y secundarios a través de límites asincrónicos. Se usa cuando se produce un error en la propagación automática del contexto (por ejemplo, devoluciones de llamada de WebSocket, controladores de eventos externos).

ReasoningPart

Razonamiento del modelo/contenido de cadena de pensamiento.

Request

Representa una solicitud con contexto de telemetría. Se usa en todos los tipos de ámbito para el seguimiento de canales y conversaciones.

ServerToolCallPart

Invocación de herramientas del lado servidor.

ServerToolCallResponsePart

Respuesta de la herramienta del lado servidor.

ServiceEndpoint

Representa un punto de conexión para la invocación del agente.

SpanDetails

Detalles de configuración del intervalo para la creación del ámbito. Agrupa las opciones de intervalo de OpenTelemetry en un único objeto, por lo que la firma del método de ámbito permanece estable a medida que se agregan nuevas opciones.

TextPart

Contenido de texto sin formato.

ToolCallDetails

Detalles de una llamada de herramienta realizada por un agente

ToolCallRequestPart

Una llamada de herramienta solicitada por el modelo.

ToolCallResponsePart

Resultado de una llamada a herramienta.

UriPart

Referencia de URI externo.

UserDetails

Detalles sobre el autor de la llamada del usuario humano.

Alias de tipos

EnhancedAgentDetails
HeadersCarrier

Tipo de operador para encabezados HTTP usados en la propagación del contexto de seguimiento. Compatible con Node.js IncomingHttpHeaders y mapas de cadenas sin formato.

InputMessagesParam

Entrada aceptada para recordInputMessages. Admite una sola cadena, una matriz de cadenas (compatibilidad con versiones anteriores) o el contenedor con versiones.

MessagePart

Unión de todos los tipos de elementos de mensaje por convenciones semánticas de OTEL gen-ai.

Nota: GenericPart actúa como un punto de referencia para la compatibilidad directa con tipos de elementos personalizados o futuros. Dado que es type (no es un literal), exhaustivo switch/case en part.type no producirá errores en tiempo de compilación para casos no controladas.string

ObservabilityConfigurationOptions

Opciones de configuración de observabilidad: amplía las opciones de tiempo de ejecución. Todas las invalidaciones son funciones a las que se llama en cada acceso a propiedades.

Heredado de RuntimeConfigurationOptions:

  • clusterCategory
  • isNodeEnvDevelopment

Nota: isDevelopmentEnvironment es un captador derivado de la clase de configuración (basada en clusterCategory), no una opción reemplazable.

OutputMessagesParam

Entrada aceptada para recordOutputMessages. Admite una sola cadena, una matriz de cadenas (compatibilidad con versiones anteriores) o el contenedor con versiones.

ParentContext

Un contexto primario para la creación del intervalo. Acepta cualquiera de:

PerRequestSpanProcessorConfigurationOptions

Opciones de configuración para PerRequestSpanProcessor: amplía las opciones de tiempo de ejecución. Todas las invalidaciones son funciones a las que se llama en cada acceso a propiedades.

Heredado de RuntimeConfigurationOptions:

  • clusterCategory, isNodeEnvDevelopment
ResponseMessagesParam

Entrada aceptada para OutputResponse.messages. Admite cadenas sin formato, OutputMessages estructurados o un dict sin formato (tratado como resultado de llamada de herramienta por especificación de OTEL y serializado directamente a través de JSON.stringify).

Enumeraciones

ExporterEventNames

Nombres de eventos usados por Agent365Exporter para el registro y la supervisión. Estos son tipos de eventos de baja cardinalidad para garantizar una supervisión y agregación eficaces.

FinishReason

Motivo por el que un modelo dejó de generarse por convenciones semánticas de OTEL gen-ai.

InferenceOperationType

Representa una operación diferente para los tipos de inferencia del modelo.

InvocationRole

Representa distintos roles que pueden invocar un agente.

MessageRole

Rol de un participante de mensajes por convenciones semánticas de OTEL gen-ai.

Modality

Modalidad multimedia para elementos de blob, archivo y URI.

Funciones

createContextWithParentSpanRef(Context, ParentSpanRef)

Crea un nuevo contexto con una referencia explícita de intervalo primario. Esto permite que los intervalos secundarios estén correctamente primarios incluso cuando se interrumpe el contexto asincrónico.

extractContextFromHeaders(HeadersCarrier, Context)

Extrae el contexto de seguimiento de los encabezados HTTP entrantes mediante el propagador W3C registrado globalmente. Devuelve un objeto OTel ParentContext que se puede pasar a las clases de ámbito como ParentContext.

Ejemplo

const parentCtx = extractContextFromHeaders(req.headers);
const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails, undefined, { parentContext: parentCtx });
formatError(unknown)

Dar formato al objeto de error para el registro con seguimiento de mensajes y pila

getExportToken(Context)

Recupere el token de exportación por solicitud de un contexto de OTel determinado (o el activo).

getLogger()

Obtención de la instancia del registrador actual

injectContextToHeaders(Record<string, string>, Context)

Inserta el contexto de seguimiento actual (traceparent/tracestate encabezados) en el objeto de encabezados proporcionado mediante el propagador W3C registrado globalmente.

Ejemplo

const headers: Record<string, string> = {};
injectContextToHeaders(headers);
await fetch('http://service-b/process', { headers });
isPerRequestExportEnabled(IConfigurationProvider<PerRequestSpanProcessorConfiguration>)

Compruebe si la exportación por solicitud está habilitada. Precedencia: invalida internamente la > variable de entorno del proveedor > de configuración. Cuando está habilitada, se usa PerRequestSpanProcessor en lugar de BatchSpanProcessor. El token se pasa a través de OTel Context (almacenamiento local asincrónico) en el momento de la exportación.

normalizeInputMessages(InputMessagesParam)

Normaliza un objeto InputMessagesParam en un contenedor con InputMessages versiones.

  • string / string[] → convertido en ChatMessage[] y encapsulado
  • InputMessages → devuelto as-is
normalizeOutputMessages(OutputMessagesParam)

Normaliza un objeto OutputMessagesParam en un contenedor con OutputMessages versiones.

  • string / string[] → convertido en OutputMessage[] y encapsulado
  • OutputMessages → devuelto as-is
resetLogger()

Restablecer al registrador de consola predeterminado (principalmente para pruebas)

runWithExportToken<T>(string, () => T)

Ejecute una función dentro de un contexto que contenga el token de exportación por solicitud. Esto mantiene el token solo en OTel Context (ALS), nunca en ningún registro.

El token se puede actualizar más adelante a través updateExportToken() de antes de vaciar el seguimiento, útil cuando la devolución de llamada es de larga duración y el token original puede expirar antes de la exportación.

runWithExtractedTraceContext<T>(HeadersCarrier, () => T)

Extrae el contexto de seguimiento de los encabezados HTTP entrantes y ejecuta la devolución de llamada dentro de ese contexto. Los intervalos creados dentro de la devolución de llamada se asociarán al seguimiento extraído.

Ejemplo

runWithExtractedTraceContext(req.headers, () => {
  const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails);
  scope.dispose();
});
runWithParentSpanRef<T>(ParentSpanRef, () => T)

Ejecuta una función de devolución de llamada dentro de un contexto que tiene una referencia explícita de intervalo primario. Esto resulta útil para crear intervalos secundarios en devoluciones de llamada asincrónicas en las que se interrumpe la propagación del contexto.

safeSerializeToJson(string | Record<string, unknown>, string)

Garantiza que el valor siempre es una cadena que se puede analizar con JSON.

  • Los objetos se serializan a través de JSON.stringify.
  • Las cadenas que ya son objetos o matrices JSON válidos se pasan a través.
  • Todas las demás cadenas (incluidas las primitivas JSON sin sistema operativo) se encapsulan: { [key]: value }.
serializeMessages(InputMessages | OutputMessages)

Serializa un contenedor de mensajes con versiones en JSON.

La salida es el objeto contenedor completo: {"version":"0.1.0","messages":[...]}.

El try/catch garantiza que la grabación de telemetría no se produzca incluso cuando las partes del mensaje contienen valores no serializables JSON (por ejemplo, BigInt, referencias circulares).

setLogger(ILogger)

Establecimiento de una implementación de registrador personalizado para el SDK de observabilidad

Ejemplo con Winston:

import * as winston from 'winston';
import { setLogger } from '@microsoft/agents-a365-observability';

const winstonLogger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

setLogger({
  info: (msg, ...args) => winstonLogger.info(msg, ...args),
  warn: (msg, ...args) => winstonLogger.warn(msg, ...args),
  error: (msg, ...args) => winstonLogger.error(msg, ...args),
  event: (eventType, isSuccess, durationMs, message, details) => {
    // eventType is ExporterEventNames enum value
    winstonLogger.log({ level: isSuccess ? 'info' : 'error', eventType, isSuccess, durationMs, message, ...details });
  }
});
truncateValue(string)

Truncar un valor de cadena para MAX_ATTRIBUTE_LENGTH caracteres. Si el valor supera el límite, se recorta y se anexa un sufijo de truncamiento, con la longitud total limitada exactamente MAX_ATTRIBUTE_LENGTH.

updateExportToken(string)

Actualice el token de exportación en el contexto de OTel activo. Llame a esto para actualizar el token antes de finalizar el intervalo raíz cuando el token original haya expirado durante una solicitud de larga duración.

Debe llamarse a dentro del mismo contexto asincrónico creado por runWithExportToken.

Variables

A365_MESSAGE_SCHEMA_VERSION
MAX_ATTRIBUTE_LENGTH

Longitud máxima para los valores de atributo de intervalo. Los valores que superen este límite se truncarán con un sufijo.

defaultObservabilityConfigurationProvider

Proveedor predeterminado compartido para ObservabilityConfiguration.

defaultPerRequestSpanProcessorConfigurationProvider

Proveedor predeterminado compartido para PerRequestSpanProcessorConfiguration.

logger

Instancia predeterminada del registrador para la compatibilidad con versiones anteriores. Delega al registrador global que se puede reemplazar a través de setLogger().

Detalles de la función

createContextWithParentSpanRef(Context, ParentSpanRef)

Crea un nuevo contexto con una referencia explícita de intervalo primario. Esto permite que los intervalos secundarios estén correctamente primarios incluso cuando se interrumpe el contexto asincrónico.

function createContextWithParentSpanRef(base: Context, parent: ParentSpanRef): Context

Parámetros

base

Context

Contexto base que se va a extender (normalmente context.active())

parent
ParentSpanRef

Referencia de intervalo principal que contiene traceId y spanId

Devoluciones

Context

Nuevo contexto con el conjunto de intervalos primarios

extractContextFromHeaders(HeadersCarrier, Context)

Extrae el contexto de seguimiento de los encabezados HTTP entrantes mediante el propagador W3C registrado globalmente. Devuelve un objeto OTel ParentContext que se puede pasar a las clases de ámbito como ParentContext.

Ejemplo

const parentCtx = extractContextFromHeaders(req.headers);
const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails, undefined, { parentContext: parentCtx });
function extractContextFromHeaders(headers: HeadersCarrier, baseCtx?: Context): Context

Parámetros

headers
HeadersCarrier

Encabezados de solicitud HTTP entrantes que contienen traceparent/tracestate.

baseCtx

Context

Contexto base opcional que se va a extender. El valor predeterminado es el contexto activo.

Devoluciones

Context

Un contexto de OTel que contiene la información de seguimiento extraída.

formatError(unknown)

Dar formato al objeto de error para el registro con seguimiento de mensajes y pila

function formatError(error: unknown): string

Parámetros

error

unknown

Devoluciones

string

getExportToken(Context)

Recupere el token de exportación por solicitud de un contexto de OTel determinado (o el activo).

function getExportToken(ctx?: Context): string | undefined

Parámetros

ctx

Context

Devoluciones

string | undefined

getLogger()

Obtención de la instancia del registrador actual

function getLogger(): ILogger

Devoluciones

injectContextToHeaders(Record<string, string>, Context)

Inserta el contexto de seguimiento actual (traceparent/tracestate encabezados) en el objeto de encabezados proporcionado mediante el propagador W3C registrado globalmente.

Ejemplo

const headers: Record<string, string> = {};
injectContextToHeaders(headers);
await fetch('http://service-b/process', { headers });
function injectContextToHeaders(headers: Record<string, string>, ctx?: Context): Record<string, string>

Parámetros

headers

Record<string, string>

Objeto mutable donde se escribirán los encabezados de contexto de seguimiento.

ctx

Context

Contexto de OTel opcional desde el que se va a insertar. El valor predeterminado es el contexto activo.

Devoluciones

Record<string, string>

El mismo headers objeto, para la comodidad de encadenamiento.

isPerRequestExportEnabled(IConfigurationProvider<PerRequestSpanProcessorConfiguration>)

Compruebe si la exportación por solicitud está habilitada. Precedencia: invalida internamente la > variable de entorno del proveedor > de configuración. Cuando está habilitada, se usa PerRequestSpanProcessor en lugar de BatchSpanProcessor. El token se pasa a través de OTel Context (almacenamiento local asincrónico) en el momento de la exportación.

function isPerRequestExportEnabled(configProvider?: IConfigurationProvider<PerRequestSpanProcessorConfiguration>): boolean

Parámetros

configProvider

IConfigurationProvider<PerRequestSpanProcessorConfiguration>

Proveedor de configuración opcional. El valor predeterminado es defaultPerRequestSpanProcessorConfigurationProvider si no se especifica.

Devoluciones

boolean

normalizeInputMessages(InputMessagesParam)

Normaliza un objeto InputMessagesParam en un contenedor con InputMessages versiones.

  • string / string[] → convertido en ChatMessage[] y encapsulado
  • InputMessages → devuelto as-is
function normalizeInputMessages(param: InputMessagesParam): InputMessages

Parámetros

Devoluciones

normalizeOutputMessages(OutputMessagesParam)

Normaliza un objeto OutputMessagesParam en un contenedor con OutputMessages versiones.

  • string / string[] → convertido en OutputMessage[] y encapsulado
  • OutputMessages → devuelto as-is
function normalizeOutputMessages(param: OutputMessagesParam): OutputMessages

Parámetros

Devoluciones

resetLogger()

Restablecer al registrador de consola predeterminado (principalmente para pruebas)

function resetLogger()

runWithExportToken<T>(string, () => T)

Ejecute una función dentro de un contexto que contenga el token de exportación por solicitud. Esto mantiene el token solo en OTel Context (ALS), nunca en ningún registro.

El token se puede actualizar más adelante a través updateExportToken() de antes de vaciar el seguimiento, útil cuando la devolución de llamada es de larga duración y el token original puede expirar antes de la exportación.

function runWithExportToken<T>(token: string, fn: () => T): T

Parámetros

token

string

fn

() => T

Devoluciones

T

runWithExtractedTraceContext<T>(HeadersCarrier, () => T)

Extrae el contexto de seguimiento de los encabezados HTTP entrantes y ejecuta la devolución de llamada dentro de ese contexto. Los intervalos creados dentro de la devolución de llamada se asociarán al seguimiento extraído.

Ejemplo

runWithExtractedTraceContext(req.headers, () => {
  const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails);
  scope.dispose();
});
function runWithExtractedTraceContext<T>(headers: HeadersCarrier, callback: () => T): T

Parámetros

headers
HeadersCarrier

Encabezados de solicitud HTTP entrantes que contienen traceparent/tracestate.

callback

() => T

Función que se va a ejecutar en el contexto extraído.

Devoluciones

T

Resultado de la devolución de llamada.

runWithParentSpanRef<T>(ParentSpanRef, () => T)

Ejecuta una función de devolución de llamada dentro de un contexto que tiene una referencia explícita de intervalo primario. Esto resulta útil para crear intervalos secundarios en devoluciones de llamada asincrónicas en las que se interrumpe la propagación del contexto.

function runWithParentSpanRef<T>(parent: ParentSpanRef, callback: () => T): T

Parámetros

parent
ParentSpanRef

Referencia del intervalo primario

callback

() => T

Función que se va a ejecutar con el contexto primario

Devoluciones

T

Resultado de la devolución de llamada

safeSerializeToJson(string | Record<string, unknown>, string)

Garantiza que el valor siempre es una cadena que se puede analizar con JSON.

  • Los objetos se serializan a través de JSON.stringify.
  • Las cadenas que ya son objetos o matrices JSON válidos se pasan a través.
  • Todas las demás cadenas (incluidas las primitivas JSON sin sistema operativo) se encapsulan: { [key]: value }.
function safeSerializeToJson(value: string | Record<string, unknown>, key: string): string

Parámetros

value

string | Record<string, unknown>

Valor que se va a serializar.

key

string

Clave que se va a usar al encapsular una cadena sin formato.

Devoluciones

string

serializeMessages(InputMessages | OutputMessages)

Serializa un contenedor de mensajes con versiones en JSON.

La salida es el objeto contenedor completo: {"version":"0.1.0","messages":[...]}.

El try/catch garantiza que la grabación de telemetría no se produzca incluso cuando las partes del mensaje contienen valores no serializables JSON (por ejemplo, BigInt, referencias circulares).

function serializeMessages(wrapper: InputMessages | OutputMessages): string

Parámetros

Devoluciones

string

setLogger(ILogger)

Establecimiento de una implementación de registrador personalizado para el SDK de observabilidad

Ejemplo con Winston:

import * as winston from 'winston';
import { setLogger } from '@microsoft/agents-a365-observability';

const winstonLogger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

setLogger({
  info: (msg, ...args) => winstonLogger.info(msg, ...args),
  warn: (msg, ...args) => winstonLogger.warn(msg, ...args),
  error: (msg, ...args) => winstonLogger.error(msg, ...args),
  event: (eventType, isSuccess, durationMs, message, details) => {
    // eventType is ExporterEventNames enum value
    winstonLogger.log({ level: isSuccess ? 'info' : 'error', eventType, isSuccess, durationMs, message, ...details });
  }
});
function setLogger(customLogger: ILogger)

Parámetros

customLogger
ILogger

Implementación del registrador personalizado

truncateValue(string)

Truncar un valor de cadena para MAX_ATTRIBUTE_LENGTH caracteres. Si el valor supera el límite, se recorta y se anexa un sufijo de truncamiento, con la longitud total limitada exactamente MAX_ATTRIBUTE_LENGTH.

function truncateValue(value: string): string

Parámetros

value

string

Cadena que se va a truncar

Devoluciones

string

Cadena original si está dentro de los límites; de lo contrario, la cadena truncada

updateExportToken(string)

Actualice el token de exportación en el contexto de OTel activo. Llame a esto para actualizar el token antes de finalizar el intervalo raíz cuando el token original haya expirado durante una solicitud de larga duración.

Debe llamarse a dentro del mismo contexto asincrónico creado por runWithExportToken.

function updateExportToken(token: string): boolean

Parámetros

token

string

Token nuevo que se va a usar para la exportación.

Devoluciones

boolean

true si el token se actualizó correctamente, false si no se encontró ningún titular del token.

Detalles de variables

A365_MESSAGE_SCHEMA_VERSION

A365_MESSAGE_SCHEMA_VERSION: "0.1.0"

Tipo

string

MAX_ATTRIBUTE_LENGTH

Longitud máxima para los valores de atributo de intervalo. Los valores que superen este límite se truncarán con un sufijo.

MAX_ATTRIBUTE_LENGTH: 8192

Tipo

8192

defaultObservabilityConfigurationProvider

Proveedor predeterminado compartido para ObservabilityConfiguration.

defaultObservabilityConfigurationProvider: DefaultConfigurationProvider<ObservabilityConfiguration>

Tipo

defaultPerRequestSpanProcessorConfigurationProvider

Proveedor predeterminado compartido para PerRequestSpanProcessorConfiguration.

defaultPerRequestSpanProcessorConfigurationProvider: DefaultConfigurationProvider<PerRequestSpanProcessorConfiguration>

Tipo

logger

Instancia predeterminada del registrador para la compatibilidad con versiones anteriores. Delega al registrador global que se puede reemplazar a través de setLogger().

logger: ILogger

Tipo