UNPKG

@ogcio/o11y-sdk-node

Version:

Opentelemetry standard instrumentation SDK for NodeJS based project

35 lines (32 loc) 973 B
import { LogRecord, LogRecordProcessor } from "@opentelemetry/sdk-logs"; import { Context } from "@opentelemetry/api"; import { SignalAttributeValue } from "../index.js"; export class EnrichLogProcessor implements LogRecordProcessor { private _spanAttributes?: | Record<string, SignalAttributeValue | (() => SignalAttributeValue)> | undefined = undefined; constructor( spanAttributes?: Record< string, SignalAttributeValue | (() => SignalAttributeValue) >, ) { this._spanAttributes = spanAttributes; } forceFlush(): Promise<void> { return Promise.resolve(); } onEmit(logRecord: LogRecord, _context?: Context): void { if (this._spanAttributes) { for (const [key, value] of Object.entries(this._spanAttributes)) { logRecord.setAttribute( key, typeof value === "function" ? value() : value, ); } } } shutdown(): Promise<void> { return Promise.resolve(); } }