Freigeben über


@microsoft/agents-a365-observability package

Klassen

Agent365ExporterOptions

Maximale Anzahl von Spannen pro Exportbatch.

BaggageBuilder

Gepäck-Generator pro Anforderung für die OpenTelemetry-Kontextverteilung.

Diese Klasse bietet eine Fluent-API zum Festlegen von Gepäckwerten, die im OpenTelemetry-Kontext weitergegeben werden.

Beispiel

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

Kontextmanager für Gepäckumfang.

Diese Klasse verwaltet den Lebenszyklus von Gepäckwerten, legt sie beim Betreten und Wiederherstellen des vorherigen Kontexts beim Verlassen fest.

Builder

Generator zum Konfigurieren von Agent 365 mit OpenTelemetry-Ablaufverfolgung

ExecuteToolScope

Stellt openTelemetry-Ablaufverfolgungsbereich für KI-Toolausführungsvorgänge bereit.

InferenceScope

Stellt openTelemetry-Ablaufverfolgungsbereich für generative KI-Ableitungsvorgänge bereit.

InvokeAgentScope

Stellt den OpenTelemetry-Ablaufverfolgungsbereich für KI-Agent-Aufrufvorgänge bereit.

ObservabilityConfiguration

Konfiguration für Observability-Paket. Erbt Laufzeiteinstellungen und fügt Observability-spezifische Einstellungen hinzu.

ObservabilityManager

Haupteinstiegspunkt für Agent 365, der die OpenTelemetry-Ablaufverfolgung für KI-Agents und -Tools bereitstellt

OpenTelemetryConstants

OpenTelemetry-Konstanten für Agent 365

OpenTelemetryScope

Basisklasse für OpenTelemetry-Ablaufverfolgungsbereiche

OutputScope

Stellt den Bereich der OpenTelemetry-Ablaufverfolgung für die Ausgabenachrichtenablaufverfolgung mit übergeordneter Spanverknüpfung bereit.

PerRequestSpanProcessorConfiguration

Konfiguration für PerRequestSpanProcessor. Erbt Laufzeiteinstellungen (clusterCategory, isNodeEnvDevelopment) und fügt Prozessorschutzläufe pro Anforderung hinzu.

Dies ist von ObservabilityConfiguration getrennt, da PerRequestSpanProcessor nur in bestimmten Szenarien verwendet wird und diese Einstellungen nicht in der allgemeinen ObservabilityConfiguration verfügbar gemacht werden sollten.

Schnittstellen

AgentDetails

Details zu einem KI-Agent

BlobPart

Inline-Binärdaten (base64-codiert).

BuilderOptions

Konfigurationsoptionen für Agent 365 Observability Builder

CallerDetails

Anruferdetails für die Bereichserstellung. Unterstützt menschliche Anrufer, Agentanrufer oder beides (A2A mit einem Menschen in der Kette).

Migrationshinweis: In v1 wird der Name CallerDetails auf die identität des Anrufers (jetzt UserDetails) verwiesen. In v2 wurde sie als Wrapper umverwendet, der Informationen von Menschen- und Agentanrufern gruppiert.

Siehe UserDetails – Menschliche Anruferidentität (zuvor CallerDetails) Siehe CHANGELOG.md – Abschnitt "Änderungen unterbrechen" für Migrationsleitfaden

Channel

Stellt den Kanal für einen Aufruf dar.

ChatMessage

Eine an ein Modell gesendete Eingabenachricht (OTEL gen-ai semantische Konventionen).

FilePart

Verweisen auf eine vorab hochgeladene Datei.

GenericPart

Erweiterbarer Teil für benutzerdefinierte/ zukünftige Typen.

GenericServerToolCall

Extensible Server tool call details with a type diskriminator.

GenericServerToolCallResponse

Extensible Server tool call response with a type diskriminator.

ILogger

Benutzerdefinierte Loggerschnittstelle für Agent 365 Observability Implementieren Sie diese Schnittstelle zur Unterstützung von Protokollierungs-Back-Ends

InferenceDetails

Details für einen Rückschlussanruf

InferenceResponse

Details zum Aufzeichnen der Antwort von einem Rückschlussanruf

InputMessages
InvokeAgentScopeDetails

Details zum Aufrufen des Agentbereichs.

OutputMessage

Eine Ausgabemeldung, die von einem Modell (OTEL gen-ai semantic conventions) erzeugt wird.

OutputMessages
OutputResponse

Stellt eine Antwort dar, die Ausgabemeldungen von einem Agent enthält. Wird zusammen mit OutputScope für die Ausgabenachrichtenablaufverfolgung verwendet. Akzeptiert einfache Zeichenfolgen, strukturierte OTEL OutputMessage-Objekte oder ein unformatiertes Diktat (behandelt als Toolaufrufergebnis pro OTEL-Spezifikation).

ParentSpanRef

Verweis auf eine übergeordnete Spanne für explizite Verknüpfungen zwischen übergeordneten und untergeordneten Elementen über asynchrone Grenzen hinweg. Wird verwendet, wenn die automatische Kontextverteilung fehlschlägt (z. B. WebSocket-Rückrufe, externe Ereignishandler).

ReasoningPart

Modellieren von Begründungen /Gedankenketteninhalten.

Request

Stellt eine Anforderung mit Telemetriekontext dar. Wird für alle Bereichstypen für die Kanal- und Unterhaltungsnachverfolgung verwendet.

ServerToolCallPart

Serverseitiger Toolaufruf.

ServerToolCallResponsePart

Serverseitige Toolantwort.

ServiceEndpoint

Stellt einen Endpunkt für den Agentaufruf dar.

SpanDetails

Umfassen Konfigurationsdetails für die Bereichserstellung. Gruppiert OpenTelemetry-Optionen in einem einzelnen Objekt, sodass die Bereichsmethodensignatur stabil bleibt, wenn neue Optionen hinzugefügt werden.

TextPart

Nur-Text-Inhalt.

ToolCallDetails

Details zu einem Toolaufruf, der von einem Agent getätigt wurde

ToolCallRequestPart

Ein Vom Modell angeforderter Toolaufruf.

ToolCallResponsePart

Ergebnis eines Toolaufrufs.

UriPart

Externer URI-Verweis.

UserDetails

Details zum Anrufer des menschlichen Benutzers.

Typaliase

EnhancedAgentDetails
HeadersCarrier

Trägertyp für HTTP-Header, die in der Ablaufverfolgungskontextverteilung verwendet werden. Kompatibel mit Node.js IncomingHttpHeaders und einfachen Zeichenfolgenzuordnungen.

InputMessagesParam

Akzeptierte Eingabe für recordInputMessages. Unterstützt eine einzelne Zeichenfolge, ein Array von Zeichenfolgen (Abwärtskompat) oder den versionsbasierten Wrapper.

MessagePart

Union aller Nachrichtenteiltypen gemäß OTEL gen-ai semantischen Konventionen.

Hinweis: GenericPart fungiert als Catch-All für die Vorwärtskompatibilität mit benutzerdefinierten oder zukünftigen Teiltypen. Da es typestring sich (nicht um ein Literal) handelt, erzeugt erschöpfend switch/casepart.type keine Kompilierungszeitfehler für nicht behandelte Fälle.

ObservabilityConfigurationOptions

Observability-Konfigurationsoptionen – erweitert Laufzeitoptionen. Alle Außerkraftsetzungen sind Funktionen, die für jeden Eigenschaftenzugriff aufgerufen werden.

Geerbt von RuntimeConfigurationOptions:

  • clusterCategory
  • isNodeEnvDevelopment

Hinweis: isDevelopmentEnvironment ist ein abgeleiteter Getter für die Konfigurationsklasse (basierend auf clusterCategory), keine überschreibbare Option.

OutputMessagesParam

Akzeptierte Eingabe für recordOutputMessages. Unterstützt eine einzelne Zeichenfolge, ein Array von Zeichenfolgen (Abwärtskompat) oder den versionsbasierten Wrapper.

ParentContext

Ein übergeordneter Kontext für die Span Creation. Akzeptiert entweder:

PerRequestSpanProcessorConfigurationOptions

Konfigurationsoptionen für PerRequestSpanProcessor – erweitert Laufzeitoptionen. Alle Außerkraftsetzungen sind Funktionen, die für jeden Eigenschaftenzugriff aufgerufen werden.

Geerbt von RuntimeConfigurationOptions:

  • clusterCategory, isNodeEnvDevelopment
ResponseMessagesParam

Akzeptierte Eingabe für OutputResponse.messages. Unterstützt einfache Zeichenfolgen, strukturierte OutputMessages oder ein unformatiertes Diktat (behandelt als Toolaufrufergebnis pro OTEL-Spezifikation und serialisiert direkt über JSON.stringify).

Enumerationen

ExporterEventNames

Ereignisnamen, die von Agent365Exporter zur Protokollierung und Überwachung verwendet werden. Hierbei handelt es sich um Ereignistypen mit niedriger Kardinalität, um eine effiziente Überwachung und Aggregation zu gewährleisten.

FinishReason

Grund, warum ein Modell nicht mehr per OTEL gen-ai-Semantikkonventionen generiert wurde.

InferenceOperationType

Stellt unterschiedliche Vorgänge für Typen für Modellinferenz dar.

InvocationRole

Stellt unterschiedliche Rollen dar, die einen Agent aufrufen können

MessageRole

Rolle eines Nachrichtenteilnehmers gemäß OTEL gen-ai semantischen Konventionen.

Modality

Medienmodalitäten für Blob-, Datei- und URI-Teile.

Functions

createContextWithParentSpanRef(Context, ParentSpanRef)

Erstellt einen neuen Kontext mit einem expliziten übergeordneten Span-Bezug. Auf diese Weise können untergeordnete Abschnitte korrekt übergeordnet werden, auch wenn asynchroner Kontext unterbrochen wird.

extractContextFromHeaders(HeadersCarrier, Context)

Extrahiert den Ablaufverfolgungskontext aus eingehenden HTTP-Headern mithilfe des global registrierten W3C-Verteilungsmoduls. Gibt ein OTel ParentContext zurück, das als ParentContext an Bereichsklassen übergeben werden kann.

Beispiel

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

Formatieren des Fehlerobjekts für die Protokollierung mit Nachrichten- und Stapelablaufverfolgung

getExportToken(Context)

Abrufen des Exporttokens pro Anforderung aus einem bestimmten OTel-Kontext (oder dem aktiven).

getLogger()

Abrufen der aktuellen Loggerinstanz

injectContextToHeaders(Record<string, string>, Context)

Fügt den aktuellen Ablaufverfolgungskontext (traceparent/tracestate Header) mithilfe des global registrierten W3C-Verteilungsobjekts in das bereitgestellte Headerobjekt ein.

Beispiel

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

Überprüfen Sie, ob der Export pro Anforderung aktiviert ist. Rangfolge: Interne Außerkraftsetzungen der Umgebungsvariable des Konfigurationsanbieters >> . Wenn diese Option aktiviert ist, wird der PerRequestSpanProcessor anstelle von BatchSpanProcessor verwendet. Das Token wird zur Exportzeit über OTel Context (asynchroner lokaler Speicher) übergeben.

normalizeInputMessages(InputMessagesParam)

Normalisiert einen InputMessagesParam in einen versionsierten InputMessages Wrapper.

  • string / string[] → in ChatMessage[] konvertiert und umschlossen
  • InputMessages → as-is zurückgegeben
normalizeOutputMessages(OutputMessagesParam)

Normalisiert einen OutputMessagesParam in einen versionsierten OutputMessages Wrapper.

  • string / string[] → in OutputMessage[] konvertiert und umschlossen
  • OutputMessages → as-is zurückgegeben
resetLogger()

Zurücksetzen auf den Standardkonsolenlogger (hauptsächlich für Tests)

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

Führen Sie eine Funktion innerhalb eines Kontexts aus, der das Exporttoken pro Anforderung enthält. Dadurch wird das Token nur in OTel Context (ALS) beibehalten, nie in einer Registrierung.

Das Token kann später aktualisiert updateExportToken() werden, bevor die Ablaufverfolgung geleert wird – nützlich, wenn der Rückruf lange ausgeführt wird und das ursprüngliche Token vor dem Export abläuft.

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

Extrahiert den Ablaufverfolgungskontext aus eingehenden HTTP-Headern und führt den Rückruf innerhalb dieses Kontexts aus. Alle innerhalb des Rückrufs erstellten Spans werden der extrahierten Ablaufverfolgung übergeordnet.

Beispiel

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

Führt eine Rückruffunktion in einem Kontext aus, der einen expliziten übergeordneten Span-Bezug aufweist. Dies ist nützlich, um untergeordnete Abschnitte in asynchronen Rückrufen zu erstellen, bei denen die Kontextverteilung unterbrochen ist.

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

Stellt sicher, dass der Wert immer eine JSON-parseable Zeichenfolge ist.

  • Objekte werden über JSON.stringify serialisiert.
  • Zeichenfolgen, die bereits gültige JSON-Objekte/Arrays sind, werden übergeben.
  • Alle anderen Zeichenfolgen (einschließlich bare JSON-Grundtypen) werden umschlossen: { [key]: value }.
serializeMessages(InputMessages | OutputMessages)

Serialisiert einen versionsierten Nachrichtenwrapper in JSON.

Die Ausgabe ist das vollständige Wrapperobjekt: {"version":"0.1.0","messages":[...]}.

Der Try/Catch stellt sicher, dass die Telemetrieaufzeichnung nicht ausgelöst wird, auch wenn Nachrichtenteile nicht-JSON-serialisierbare Werte enthalten (z. B. BigInt, Zirkelverweisen).

setLogger(ILogger)

Festlegen einer benutzerdefinierten Loggerimplementierung für das Observability SDK

Beispiel mit 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)

Kürzen Sie einen Zeichenfolgenwert auf MAX_ATTRIBUTE_LENGTH Zeichen. Wenn der Wert den Grenzwert überschreitet, wird er gekürzt und ein Abkürzungssuffix angefügt, wobei die Gesamtlänge bei genau MAX_ATTRIBUTE_LENGTH begrenzt ist.

updateExportToken(string)

Aktualisieren Sie das Exporttoken im aktiven OTel-Kontext. Rufen Sie das Token auf, um das Token zu aktualisieren, bevor die Stammspanne beendet wird, wenn das ursprüngliche Token möglicherweise während einer langen Anforderung abgelaufen ist.

Muss innerhalb desselben asynchronen Kontexts aufgerufen werden, der von runWithExportToken.

Variablen

A365_MESSAGE_SCHEMA_VERSION
MAX_ATTRIBUTE_LENGTH

Maximale Länge für Span-Attributwerte. Werte, die diesen Grenzwert überschreiten, werden mit einem Suffix abgeschnitten.

defaultObservabilityConfigurationProvider

Freigegebener Standardanbieter für ObservabilityConfiguration.

defaultPerRequestSpanProcessorConfigurationProvider

Freigegebener Standardanbieter für PerRequestSpanProcessorConfiguration.

logger

Standardprotokollierinstanz für Abwärtskompatibilität. Delegiert an den globalen Logger, der über setLogger() ersetzt werden kann.

Details zur Funktion

createContextWithParentSpanRef(Context, ParentSpanRef)

Erstellt einen neuen Kontext mit einem expliziten übergeordneten Span-Bezug. Auf diese Weise können untergeordnete Abschnitte korrekt übergeordnet werden, auch wenn asynchroner Kontext unterbrochen wird.

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

Parameter

base

Context

Der zu erweiternde Basiskontext (in der Regel context.active())

parent
ParentSpanRef

Der übergeordnete Span-Bezug, der TraceId und spanId enthält

Gibt zurück

Context

Ein neuer Kontext mit dem übergeordneten Span-Satz

extractContextFromHeaders(HeadersCarrier, Context)

Extrahiert den Ablaufverfolgungskontext aus eingehenden HTTP-Headern mithilfe des global registrierten W3C-Verteilungsmoduls. Gibt ein OTel ParentContext zurück, das als ParentContext an Bereichsklassen übergeben werden kann.

Beispiel

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

Parameter

headers
HeadersCarrier

Die eingehenden HTTP-Anforderungsheader, die traceparent/tracestate.

baseCtx

Context

Optionaler Basiskontext, der erweitert werden soll. Standardmäßig wird der aktive Kontext verwendet.

Gibt zurück

Context

Ein OTel-Kontext, der die extrahierten Ablaufverfolgungsinformationen enthält.

formatError(unknown)

Formatieren des Fehlerobjekts für die Protokollierung mit Nachrichten- und Stapelablaufverfolgung

function formatError(error: unknown): string

Parameter

error

unknown

Gibt zurück

string

getExportToken(Context)

Abrufen des Exporttokens pro Anforderung aus einem bestimmten OTel-Kontext (oder dem aktiven).

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

Parameter

ctx

Context

Gibt zurück

string | undefined

getLogger()

Abrufen der aktuellen Loggerinstanz

function getLogger(): ILogger

Gibt zurück

injectContextToHeaders(Record<string, string>, Context)

Fügt den aktuellen Ablaufverfolgungskontext (traceparent/tracestate Header) mithilfe des global registrierten W3C-Verteilungsobjekts in das bereitgestellte Headerobjekt ein.

Beispiel

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>

Parameter

headers

Record<string, string>

Veränderbares Objekt, bei dem Ablaufverfolgungskontextheader geschrieben werden.

ctx

Context

Optionaler OTel-Kontext, aus dem eingefügt werden soll. Standardmäßig wird der aktive Kontext verwendet.

Gibt zurück

Record<string, string>

Dasselbe headers Objekt zur Verkettung des Komforts.

isPerRequestExportEnabled(IConfigurationProvider<PerRequestSpanProcessorConfiguration>)

Überprüfen Sie, ob der Export pro Anforderung aktiviert ist. Rangfolge: Interne Außerkraftsetzungen der Umgebungsvariable des Konfigurationsanbieters >> . Wenn diese Option aktiviert ist, wird der PerRequestSpanProcessor anstelle von BatchSpanProcessor verwendet. Das Token wird zur Exportzeit über OTel Context (asynchroner lokaler Speicher) übergeben.

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

Parameter

configProvider

IConfigurationProvider<PerRequestSpanProcessorConfiguration>

Optionaler Konfigurationsanbieter. Standardwert ist "defaultPerRequestSpanProcessorConfigurationProvider", falls nicht angegeben.

Gibt zurück

boolean

normalizeInputMessages(InputMessagesParam)

Normalisiert einen InputMessagesParam in einen versionsierten InputMessages Wrapper.

  • string / string[] → in ChatMessage[] konvertiert und umschlossen
  • InputMessages → as-is zurückgegeben
function normalizeInputMessages(param: InputMessagesParam): InputMessages

Parameter

Gibt zurück

normalizeOutputMessages(OutputMessagesParam)

Normalisiert einen OutputMessagesParam in einen versionsierten OutputMessages Wrapper.

  • string / string[] → in OutputMessage[] konvertiert und umschlossen
  • OutputMessages → as-is zurückgegeben
function normalizeOutputMessages(param: OutputMessagesParam): OutputMessages

Parameter

Gibt zurück

resetLogger()

Zurücksetzen auf den Standardkonsolenlogger (hauptsächlich für Tests)

function resetLogger()

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

Führen Sie eine Funktion innerhalb eines Kontexts aus, der das Exporttoken pro Anforderung enthält. Dadurch wird das Token nur in OTel Context (ALS) beibehalten, nie in einer Registrierung.

Das Token kann später aktualisiert updateExportToken() werden, bevor die Ablaufverfolgung geleert wird – nützlich, wenn der Rückruf lange ausgeführt wird und das ursprüngliche Token vor dem Export abläuft.

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

Parameter

token

string

fn

() => T

Gibt zurück

T

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

Extrahiert den Ablaufverfolgungskontext aus eingehenden HTTP-Headern und führt den Rückruf innerhalb dieses Kontexts aus. Alle innerhalb des Rückrufs erstellten Spans werden der extrahierten Ablaufverfolgung übergeordnet.

Beispiel

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

Parameter

headers
HeadersCarrier

Die eingehenden HTTP-Anforderungsheader, die traceparent/tracestate.

callback

() => T

Die Funktion, die innerhalb des extrahierten Kontexts ausgeführt werden soll.

Gibt zurück

T

Das Ergebnis des Rückrufs.

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

Führt eine Rückruffunktion in einem Kontext aus, der einen expliziten übergeordneten Span-Bezug aufweist. Dies ist nützlich, um untergeordnete Abschnitte in asynchronen Rückrufen zu erstellen, bei denen die Kontextverteilung unterbrochen ist.

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

Parameter

parent
ParentSpanRef

Der übergeordnete Span-Bezug

callback

() => T

Die Funktion, die mit dem übergeordneten Kontext ausgeführt werden soll

Gibt zurück

T

Das Ergebnis des Rückrufs

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

Stellt sicher, dass der Wert immer eine JSON-parseable Zeichenfolge ist.

  • Objekte werden über JSON.stringify serialisiert.
  • Zeichenfolgen, die bereits gültige JSON-Objekte/Arrays sind, werden übergeben.
  • Alle anderen Zeichenfolgen (einschließlich bare JSON-Grundtypen) werden umschlossen: { [key]: value }.
function safeSerializeToJson(value: string | Record<string, unknown>, key: string): string

Parameter

value

string | Record<string, unknown>

Der wert, der serialisiert werden soll.

key

string

Der Schlüssel, der beim Umbruch einer einfachen Zeichenfolge verwendet werden soll.

Gibt zurück

string

serializeMessages(InputMessages | OutputMessages)

Serialisiert einen versionsierten Nachrichtenwrapper in JSON.

Die Ausgabe ist das vollständige Wrapperobjekt: {"version":"0.1.0","messages":[...]}.

Der Try/Catch stellt sicher, dass die Telemetrieaufzeichnung nicht ausgelöst wird, auch wenn Nachrichtenteile nicht-JSON-serialisierbare Werte enthalten (z. B. BigInt, Zirkelverweisen).

function serializeMessages(wrapper: InputMessages | OutputMessages): string

Parameter

Gibt zurück

string

setLogger(ILogger)

Festlegen einer benutzerdefinierten Loggerimplementierung für das Observability SDK

Beispiel mit 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)

Parameter

customLogger
ILogger

Die implementierung des benutzerdefinierten Loggers

truncateValue(string)

Kürzen Sie einen Zeichenfolgenwert auf MAX_ATTRIBUTE_LENGTH Zeichen. Wenn der Wert den Grenzwert überschreitet, wird er gekürzt und ein Abkürzungssuffix angefügt, wobei die Gesamtlänge bei genau MAX_ATTRIBUTE_LENGTH begrenzt ist.

function truncateValue(value: string): string

Parameter

value

string

Die Zeichenfolge, die abgeschnitten werden soll

Gibt zurück

string

Die ursprüngliche Zeichenfolge, wenn sie innerhalb von Grenzwerten liegt, andernfalls die abgeschnittene Zeichenfolge

updateExportToken(string)

Aktualisieren Sie das Exporttoken im aktiven OTel-Kontext. Rufen Sie das Token auf, um das Token zu aktualisieren, bevor die Stammspanne beendet wird, wenn das ursprüngliche Token möglicherweise während einer langen Anforderung abgelaufen ist.

Muss innerhalb desselben asynchronen Kontexts aufgerufen werden, der von runWithExportToken.

function updateExportToken(token: string): boolean

Parameter

token

string

Das für den Export zu verwendende frische Token.

Gibt zurück

boolean

"true", wenn das Token erfolgreich aktualisiert wurde, "false", wenn kein Tokenhalter gefunden wurde.

Details zu Variablen

A365_MESSAGE_SCHEMA_VERSION

A365_MESSAGE_SCHEMA_VERSION: "0.1.0"

Typ

string

MAX_ATTRIBUTE_LENGTH

Maximale Länge für Span-Attributwerte. Werte, die diesen Grenzwert überschreiten, werden mit einem Suffix abgeschnitten.

MAX_ATTRIBUTE_LENGTH: 8192

Typ

8192

defaultObservabilityConfigurationProvider

Freigegebener Standardanbieter für ObservabilityConfiguration.

defaultObservabilityConfigurationProvider: DefaultConfigurationProvider<ObservabilityConfiguration>

Typ

defaultPerRequestSpanProcessorConfigurationProvider

Freigegebener Standardanbieter für PerRequestSpanProcessorConfiguration.

defaultPerRequestSpanProcessorConfigurationProvider: DefaultConfigurationProvider<PerRequestSpanProcessorConfiguration>

Typ

logger

Standardprotokollierinstanz für Abwärtskompatibilität. Delegiert an den globalen Logger, der über setLogger() ersetzt werden kann.

logger: ILogger

Typ